2016-07-07 3 views
1

私は、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 
+0

'node.nodeName.toUpperCase()'おそらく? https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeNameはこれについていくつかの光を当てています。 FirefoxはHTMLの代わりにXHTMLとして文書を読んでいますか?そうでない場合、特にFFでどの部分がうまく動作しないのですか?あなたはデバッガを使いましたか? – neilsimp1

+0

'node.nodeName.toUpperCase()'を試しましたが、それでもFirefoxでは動作しません。 – user3671322

+0

その場合、FFで動作しないのはどうですか? – neilsimp1

答えて

0

あなたはjqueryの小道具を(使用することができます)

$('#elem').prop("nodeName") 

example fiddle

+0

あなたのコードを試しましたが、Firefoxではまだ動作しません – user3671322

+0

本当ですか?私は答えの前にテストしていた。テストは今でも動作しています。 –

0

私は最終的に問題を解決するために管理。

問題は以前に私のような関数にパラメータeを通過せずに関数を呼び出したということでした。

isHeadingButtonActive(); 

これを修正するために、私はちょうどのような関数にパラメータeを追加しました

isHeadingButtonActive(e);