javascript - 在 TinyMCE iframe 中加载 jQuery 文件

标签 javascript jquery html iframe tinymce

我正在尝试在我的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.');
    });
}

这是我的测试 script.js 的内容:

$( document ).ready(function() {

    alert('a');

    $('.slideshow').on('click', function() {
        alert('b');
    });

    $('.slideshow').click(function() {
        alert('c');
    });

});

我收到第一个警报 a 所有脚本现已加载。,因此 script.js确实已加载。但是,当我单击 tinyMCE 内的 .slideshowdiv 时,我既没有收到 b 也没有收到 c 警报。

如何在tinyMCE中加载和运行jQuery/JS文件,并使其以与在网站本身上相同的方式执行?

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

最佳答案

问题在于TinyMCE使用designMode,因此为了向iframe添加js文件,必须首先关闭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';

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

关于javascript - 在 TinyMCE iframe 中加载 jQuery 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924605/

相关文章:

javascript - 一个代码多种功能

html - 有没有一种有效的方法可以用 HTML 元素包装 dt 和 dd?

javascript - ASP.NET UpdatePanel Javascript 回调

javascript - display = 'none' 在 Mozilla 中有效,但在 Chrome 中无效

javascript onclick 删除单个复选框

javascript - Angular 缩小构建后如何修复注入(inject)器错误?

javascript - jQuery 对话框和 ajax 回传

javascript - 如何在脚本中添加确认是或否

javascript - tinymce 在换行符上用 h1 替换主题标签 '#'

php - 更新具有选择选项的表单