6

TinyMCEのプラグインを作成していますが、jQueryを使用して、編集中のドキュメントを操作したいと考えています。

私はjQueryでTinyMCEを使用する方法(たとえば、セレクターの.tinymce()メソッド)を探していませんそのための解決策があることを知っています。

基本的に、TinyMCEによって生成されたiframeにjQueryを含める必要があります。

tinymce.dom.ScriptLoaderは、iframeではなく親ウィンドウに読み込まれるようです。そのため、これはオプションではありません。

私がこれまでに試したこと:

  • 親およびプラグインコンテキストでScriptLoaderを介してjqueryをロードします(後者はまったく効果がなく、前者は間違ったコンテキストでロードします)
  • 未定義のwindow.parent。$にアクセスします(親ウィンドウにロードされている場合でも)
  • RTFMとグーグルがありますが、関連するヒットはありません。プラグインがダイアログを開いた場合、追加のJavaScriptをロードするオプションがありますが、それも私が必要としているものではありません。

TinyMCEプラグインでjQueryを使用している人はいますか?どのように?

更新/ソリューション

タリアマの提案のおかげで、私はこれを機能させることができました。明示的なtinymce.get()を使用してエディターを取得するか、プラグインのinit()メソッドに渡される「ed」インスタンスを使用できます。ただし、初期化段階自体では、(まだ)この方法で親にアクセスすることはできません。これは、特定のハンドラーで実行できます。

例えば

(function($) {
  tinymce.create('tinymce.plugins.SOSamplePlugin', {
    init: function(ed, url) {
        $ = ed.getWin().parent.jQuery; // <- WON'T WORK!

        ed.addCommand('soCmd', function(ui, v) {
            if(e = ed.selection.getNode()) {
                $ = ed.getWin().parent.jQuery; // <- WORKS!
                $(e).wrap('<div class="sample" />');
                ed.execCommand("mceRepaint");
            }
        });
        ed.addButton('SO', {
           title: 'Title',
           cmd: 'soCmd',
           image: 'somebutton.png'
        });
    },
    getInfo: function() {
        return {
            longname: 'Example Plugin',
            author: 'Ivo',
            authorurl: 'http://vanderwijk.info/',
            infourl: 'http://vanderwijk.info',
            version: '1.0'
        };
    }
  });
  tinymce.PluginManager.add('so', tinymce.plugins.SOSamplePlugin);
})($);
4

2 に答える 2

4

容易いものだ

var editor = tinymce.get('your_editor_id');

jQueryはを使用してアクセスできます

editor.getWin().parent.jQuery
于 2012-11-12T09:59:13.637 に答える
-3

私の経験によると、JSやjqueryをIFrameに変更することはできないため、これは不可能です。

于 2012-11-11T16:56:30.913 に答える