1

onMouseOver および onMouseOut イベントを TinyMCE 内のエディター インスタンスに (プラグインを介して) 追加したいのですが、TinyMCE の API ではサポートされていないようです。具体的には、要素をマウスオーバーして「読み取り専用」モード(およびその他のもの)に切り替えると、コントロールが表示されるようにしたいと考えています。これを行うには、自分でコードを TinyMCE に追加する必要がありますか?それとも、明白でない方法でサポートされていますか? コードを追加する必要がある場合、API に含めない理由の根拠となるこれらのイベントのサポートに対する禁止事項はありますか?

以下のレスポンダーと同じ混乱を抱えている人の利益のために明確にするために、TinyMCE ライブラリによって作成された TinyMCE.Editor インスタンス (たとえば、使用されるコールバックに渡されるクラス) にイベントをアタッチしたいと考えています。 TinyMCE.init のセットアップ パラメータ内)。私は次のことをしたい

tinyMCE.init({
  .
  .
  .
  setup : function(ed) { 
    TinyMCEReadOnlySetup(ed,true); 
    ed.onMouseOver.add(ShowButton(ed));
    ed.onMouseOut.add(HideButton(ed));
  },
  .
  .
  .
});

、しかし ed (TinyMCE.Editor のインスタンス) は、同様のイベントの方法で MouseOver.add をサポートしていません。

4

2 に答える 2

0

読み取り専用モードと編集モードを切り替えるには、次を使用できます

ed.getDoc().designMode = "Off";

独自のプラグインで。または、エディターのコンテンツを保存して、onChange が発生した場合に復元することもできます。

編集:

使用できるマウスオーバーイベントリスナーを設定するには

$('#' + ed.id +'_parent').bind('mouseover',function (evt){
   setTimeout("console.log('mouseover')",50);return false;
});

これは、プラグインの onInit 部分で行うことができます。

于 2010-11-23T14:34:04.797 に答える
0

プラグインを作成し、init 属性に次の非常にハックなコードを追加することで、これを機能させることができました。

ed.onInit.add(function(ed){
                   .
                   .
                   .

    document.getElementById(ed.id + '_parent').setAttribute('onmouseover',
      "tinyMCE.editor_ShowButton('" + ed.id + "');");
    document.getElementById(ed.id + '_parent').setAttribute('onmouseout',
      "tinyMCE.editor_HideButton('" + ed.id + "');");
    //ed.getBody().appendChild(newdiv);
 });

これは最適なソリューションではありませんが、仕事は完了します。

于 2010-11-23T19:58:01.113 に答える