我有一个非常大的javascript文件,我只想在用户点击某个按钮时加载.我使用jQuery作为我的框架.是否有内置方法或插件可以帮助我这样做?
更多细节:我有一个"添加注释"按钮,应该加载TinyMCE javascript文件(我把所有TinyMCE的东西都煮成了一个JS文件),然后调用tinyMCE.init(...).
我不想在初始页面加载时加载它,因为不是每个人都会点击"添加评论".
我明白我可以这样做:
$("#addComment").click(function(e) { document.write("<script...") });
Run Code Online (Sandbox Code Playgroud)
但是有更好/封装的方式吗?
This is my script:
$.ajaxSetup({async: false});
$.getScript('http://www.mydomain.com/dev/js/tinymce/tiny_mce.js', function(){
tinyMCE.init({
document_base_url : "http://www.mydomain.com/dev/js/tinymce/",
[...],
});
});
$.ajaxSetup({async: true});
Run Code Online (Sandbox Code Playgroud)
它加载tiny_mce.js成功.但是当init在回调中使用时,在跟踪路径错误的路径后加载2:
http://www.mydomain.com/dev//langs/en.js
http://www.mydomain.com/dev//themes/advanced/editor_template.js
Run Code Online (Sandbox Code Playgroud)
即使我使用document_base_url,仍然会在路径上加载.
我尝试使用 jQuery 从 CDN 按需加载 TinyMCE 4,但没有成功。我希望避免在页面加载时加载 TinyMCE,因为它是一组(相对)庞大的脚本,相反,我计划在用户单击按钮时触发加载它。这是我所拥有的:
HTML:
...
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js'></script>
...
Run Code Online (Sandbox Code Playgroud)
jQuery:
...
if (typeof TinyMCE == 'undefined') {
$.getScript('//tinymce.cachefly.net/4/tinymce.min.js', function() {
alert('Loaded!');
tinymce.init({
selector: 'textarea',
plugins: [
'autolink contextmenu image link table'
],
menubar: false,
statusbar: false,
toolbar: false
});
});
}
...
Run Code Online (Sandbox Code Playgroud)
我可以看到 jQuery 确实获取了脚本,因为我可以在检查器中看到网络活动。回调方法被调用,我可以看到Loaded!对话框出现,但 TinyMCE 没有初始化。JavaScript 控制台不显示任何错误。
关于如何让 TinyMCE 初始化有什么想法吗?
感谢您的时间。