2

我知道如何推迟 javascript 文件的解析。这很容易。

在初始 javascript 文件之后处理 tinyMCE 调用的各种其他文件并不那么容易。主要是因为 tinyMCE 默默地失败了,我怀疑。

如果我通过常规的 html 脚本标签加载文件,它工作正常。但如果我尝试做这样的事情:

var my_local_tinymce_js_file = "http://domain.com/inc/tinymce/jscripts/tiny_mce/tiny_mce.js";

$.when($.getScript(var my_local_tinymce_js_file)).
done(function(script, textStatus) {

    alert("download of tiny_mce succeeded!");
    setTimeout("setup_tinymce();", 7500);

})
.fail() {

    alert("download of tiny_mce failed!");

});

我总是可以看到文本警报“tiny_mce 的下载成功!”,我也可以在警报框中打印出脚本变量,以证明它确实下载了脚本。

我什至在未来调用 setup_tinymce 7.5 秒,以允许加载所有其他 javascript 和 css 文件(我不相信它们正在加载)。

setup_tinymce 函数如下所示:

function setup_tinymce() {

            tinyMCE.baseURL = 'http://domain.com/inc/tinymce/jscripts/tiny_mce/';
            tinyMCE.init({
                mode : "textareas", 
                theme : "advanced", 
                schema: "html5", 
                plugins : "emotions,spellchecker,advhr,insertdatetime,preview", 
                theme_advanced_buttons1 : "bold,italic,underline,|,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,|,fontselect,fontsizeselect", 
                theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,|,image,|,advhr,|,removeformat", 
                theme_advanced_buttons3 : "", 
                theme_advanced_toolbar_location : "top", 
                theme_advanced_toolbar_align : "left", 
                theme_advanced_resizing : true
            });
            tinyMCE.execCommand('mceAddControl', false, 'comment_text');

}

这就是我尝试动态加载文件的原因... https://developers.google.com/speed/pagespeed/insights#url=http_3A_2F_2Fwww.tinymce.com_2Ftryit_2Ffull.php&mobile=false&rule=DeferParsingJavaScript

它相当大,如果我可以动态加载它,会大大加快我的页面渲染速度。

编辑:我什至尝试过一些像这样的 jQuery 代码:

$.when(
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/tiny_mce.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/langs/en.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js"),
        $.getScript("http://domain.com/inc/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js")
    ).then(


        $(function() {

            //initialize tinyMCE here

        })

    );

没有运气。该脚本加载所有适当的 JavaScript 文件(当我从 head 标签加载脚本时加载),然后初始化 tinymce 但不起作用。没有错误被抛出。

以下是一些在 tinymce 论坛上提到动态加载的旧论坛帖子...所有这些帖子都包含一些旧代码,但没有完整的示例:S

http://www.tinymce.com/forum/viewtopic.php?id=23286

http://www.tinymce.com/forum/viewtopic.php?id=2290

http://www.tinymce.com/forum/viewtopic.php?id=17467

4

1 回答 1

1

像这样加载 tinymce 可能是不可能的,因为浏览器不知道如何获取所有其他需要的 tinymce 文件(如果你找到解决方案(我认为你不会)让我知道 - 这对我很感兴趣) .

如果您的目标是使用 tinymce 加速您的页面,您也可以使用 tinymce 压缩器(请参阅开发人员下载)。这最初最多可以节省 1-2 秒。

于 2012-06-29T06:01:18.970 回答