Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在TinyMCE iframe中加载jQuery文件_Javascript_Jquery_Html_Iframe_Tinymce - Fatal编程技术网

Javascript 在TinyMCE iframe中加载jQuery文件

Javascript 在TinyMCE iframe中加载jQuery文件,javascript,jquery,html,iframe,tinymce,Javascript,Jquery,Html,Iframe,Tinymce,我正在尝试在tinyMCE实例中运行我的站点的script.js主javascript文件。这样做的目的是在tinyMCE中运行诸如“我的网站”幻灯片等功能,以实现最佳的真实编辑效果 我甚至不确定这是否可能,我是怎么想的 下面是我用来初始化的函数: function set_html_tinymce() { tinymce.init({ selector:'#edit_html_textarea', ... ... }); // LOAD

我正在尝试在tinyMCE实例中运行我的站点的script.js主javascript文件。这样做的目的是在tinyMCE中运行诸如“我的网站”幻灯片等功能,以实现最佳的真实编辑效果

我甚至不确定这是否可能,我是怎么想的

下面是我用来初始化的函数:

function set_html_tinymce() {
    tinymce.init({
        selector:'#edit_html_textarea',
        ... ...
    });

    // LOAD jQUERY AND SCRIPT.JS INSIDE TINYMCE
    var scriptLoader = new tinymce.dom.ScriptLoader();
    scriptLoader.add('http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js');
    scriptLoader.add('../js/script.js');
    scriptLoader.loadQueue(function() {
       alert('All scripts are now loaded.');
    });
}
下面是我的test script.js的内容:

我收到第一个警报a,所有脚本现在都已加载,因此script.js确实已加载。然而,当我点击tinyMCE中的.slideshow类div时,我既没有收到b警报,也没有收到c警报

我如何在tinyMCE中加载和运行jQuery/JS文件,并让它以与站点本身相同的方式执行


我希望有一个官方支持的解决方案,但如果这不可能,我会接受“黑客攻击”。

问题是TinyMCE使用设计模式,所以为了向iframe添加js文件,必须先关闭设计模式

这个解决方案对我有效:

var editor = $(tinymce.activeEditor.getBody())[0];
var iframe = $R('txtTinyMCE_ifr');

editor.designMode = 'off';

var script = iframe.contentDocument.createElement('script');
script.setAttribute('src', '../../scripts/tinymce/iframe.js');
editor.appendChild(script);

editor.designMode = 'on';

您应该将此代码添加到TinyMCE的init_instance_回调函数中。

我应该注意,这种方法在不影响designMode的情况下适用于我。我不知道还有什么其他方法可以添加javascript文件,但这并不理想,因为您正在向编辑器本身添加一个元素。我会用$e.target.getDoc来做任何你需要的事情。。。如果可能,index.editor.designMode引用iframe的document.designMode属性。你可以在这里找到更多关于该物业的信息
var editor = $(tinymce.activeEditor.getBody())[0];
var iframe = $R('txtTinyMCE_ifr');

editor.designMode = 'off';

var script = iframe.contentDocument.createElement('script');
script.setAttribute('src', '../../scripts/tinymce/iframe.js');
editor.appendChild(script);

editor.designMode = 'on';