我知道如何推迟 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