有没有办法在tinymce iframe中加载外部javascript文件?

时间:2012-09-12 23:39:27

标签: javascript jquery tinymce

是否有一种简单的方法来加载可在TinyMCE iframe内部工作的外部JavaScript?

我发现的唯一一件事(可能是答案)是:http://www.tinymce.com/wiki.php/API3:class.tinymce.dom.ScriptLoader

但是我不确定如何正确加载它或者它是否正常工作。我试图在tinymce.init指令之前和之后加载它,甚至在它内部,但似乎没有任何效果。只是想知道如何使用“ScriptLoader”功能。

4 个答案:

答案 0 :(得分:7)

您可以使用setup init配置参数

来使用scriptloader
tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onInit.add(function(ed, evt) {

        // Load a script from a specific URL using the global script loader
        tinymce.ScriptLoader.load('somescript.js');

        // Load a script using a unique instance of the script loader
        var scriptLoader = new tinymce.dom.ScriptLoader();

        scriptLoader.load('somescript.js');

      });
   }
});

答案 1 :(得分:1)

为了使用jquery插件执行此操作,我需要执行此操作:

$('textarea').tinymce({
...
  setup: function(editor) {

    var scriptLoader = new tinymce.dom.ScriptLoader();
    scriptLoader.add("Your first script");
    scriptLoader.add("Your second script");
    scriptLoader.loadQueue();

    ...
  });
});

答案 2 :(得分:0)

下面提到了另一种绝对可以尝试的方法,现在编辑器初始化后,我们可以访问iframe的元素并在那里插入或js。请注意,如果你想用 html 源代码保存脚本路径,然后在侧体中添加脚本,否则我将它添加到头部部分,因为我只是想预览这些东西。

tinymce.init({
    ...,
    setup : function(ed){
  
              ed.on('init',function(){
                  console.log('Initialized')
                  var head = ed.dom.select('head')[0]
                  //for body //var body = ed.dom.select('body')[0]
                  ed.dom.add(
                            head,
                            'script',
                            {
                                src: "/path/to/file1.js",
                                type: 'text/javascript'
                            }
                        );
                  
                  ed.dom.add(
                            head,
                            'script',
                            {
                                src: "/path/to/file1.js",
                                type: 'text/javascript'
                            }
                        );
                  
                  
              })
              
          }
});

这样,您可以在编辑器完全初始化后添加多个 JS 文件。

答案 3 :(得分:-2)

tinyMCE.init({
...
    setup : function(ed) {
      ed.onInit.add(function(ed, evt) {

        // Load a script from a specific URL using the global script loader
        tinymce.ScriptLoader.load('somescript.js');

        // Load a script using a unique instance of the script loader
        var scriptLoader = new tinymce.dom.ScriptLoader();

        scriptLoader.load('somescript.js');

      });
    }
});