1

アプリケーションの 1 つに tinyMCE を使用しようとしています。tinyMCE 内の特定の要素にイベント処理を追加したいと考えています。私たちはそれを使ってみました

Event.add(element, 'keypress', getTag);

elementはイベントをアタッチしようとしている HTML 要素であり、getTagはkeypress イベントが発生したときに呼び出す関数です接続しようとしている特定の要素は、テキストを含むスパン要素です。span タグの間に特定のキーの組み合わせ (ctrl - F10 など) が入力されたときにキャプチャし、オプションを含むメニューをポップアップしたいと考えています。

メニューのオプションは、組み合わせが入力される特定のスパン要素によって異なります。そのため、(tinyMCE 内の) ドキュメント内のすべてのスパン要素にグローバルにアタッチするのではなく、特定の要素にアタッチする必要があります。つまり、 getTag 関数は、組み合わせが入力される場所に応じて、クロージャーを使用して異なる動作をします。

問題は、特定の要素にアタッチしてテストすると、「キー押下」イベントに対して何も起こらないことです。「クリック」イベントを使用してスパン要素にアタッチしようとすると、すべてが期待どおりに機能します。「keypress」の使用に戻ると、何も起こりません。

デバッグ ツールを使用して、いくつかのことを確認しました。イベントリスナーは要素にアタッチされています。tinyMCE は、tinyMCE 内のドキュメントに対してトップレベルのキープレスとクリック (他のものと一緒に) を作成するようです。これが Editor.onKeyPress().add() のような関数の仕組みだと思います。クリックを使用して作業シナリオをデバッグすると、ドキュメント要素とスパン要素の両方でイベントが発生する場所を確認できます。keypress イベントのデバッグ中に、span 要素ではなく、document 要素に対して発生したイベントのみが表示されます。tinyMCE がイベントを抑制していると考えていますが、それを停止するためにどのように、何をする必要があるのか​​ わかりません。

4

1 に答える 1

0

独自のプラグインのいずれかでこのハンドラーを使用するか、tinymce config param setupを使用してください

ed.onKeyDown.add(function onkeydown(ed, evt) {

   var is_in_span = ed.selection.getNode().nodeName == 'SPAN';   


   // check for caret in SPAN and F10-Key
   if (is_in_span && evt.keyCode == '121'){ // you may add other keyCodes here
      // do whatever you like here
      ...
   }
});
于 2012-10-29T14:32:28.193 に答える