Javascript 在TinyMCE iframe中加载jQuery文件
我正在尝试在tinyMCE实例中运行我的站点的script.js主javascript文件。这样做的目的是在tinyMCE中运行诸如“我的网站”幻灯片等功能,以实现最佳的真实编辑效果 我甚至不确定这是否可能,我是怎么想的 下面是我用来初始化的函数: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
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';