私は、contenteditable div内の選択されたテキストに基づいてボタンの値を変更するWYSIWYGエディタを構築しています。私はChromeとMicrosoft Edgeではうまく動作するが、Firefoxでは動作しない次のjqueryコードを思いついた。選択したテキストに基づいてボタンの値を変更します(Firefoxでは機能しません)
function isHeadingButtonActive(e) {
$('#btnShowHeadingControls').removeClass('activeButton');
var e = event || window.event;
var node = e.target;
var buttontext = 'Paragraph';
while(node.nodeName != 'DIV') {
if (node.nodeName == 'H1') {
buttontext = 'Heading 1';
} else
if (node.nodeName == 'H2') {
buttontext = 'Heading 2';
} else
if (node.nodeName == 'H3') {
buttontext = 'Heading 3';
} else
if (node.nodeName == 'H4') {
buttontext = 'Heading 4';
} else
if (node.nodeName == 'H5') {
buttontext = 'Heading 5';
} else
if (node.nodeName == 'H6') {
buttontext = 'Heading 6';
}
$('#btnShowHeadingControls').addClass('activeButton');
$('#btnShowHeadingControls').val(buttontext);
node = node.parentNode;
}
}
Firefoxでこの作業を行うにはどうすればよいですか?
のFirebugでデバッグ、私はこのエラーメッセージが表示されました:ここ
ReferenceError: event is not defined
'node.nodeName.toUpperCase()'おそらく? https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeNameはこれについていくつかの光を当てています。 FirefoxはHTMLの代わりにXHTMLとして文書を読んでいますか?そうでない場合、特にFFでどの部分がうまく動作しないのですか?あなたはデバッガを使いましたか? – neilsimp1
'node.nodeName.toUpperCase()'を試しましたが、それでもFirefoxでは動作しません。 – user3671322
その場合、FFで動作しないのはどうですか? – neilsimp1