我正在使用模块模式,我想做的一件事是动态包含一个外部 JavaScript 文件,执行该文件,然后在return { }
我的模块。
我不知道如何轻松做到这一点。是否有执行伪同步外部脚本加载的标准方法?
function myModule() {
var tag = document.createElement("script");
tag.type = "text/javascript";
tag.src = "http://some/script.js";
document.getElementsByTagName('head')[0].appendChild(tag);
//something should go here to ensure file is loaded before return is executed
return {
external: externalVariable
}
}
只有一种方法可以同步加载和执行脚本资源,那就是使用同步 XHR
这是如何执行此操作的示例
// get some kind of XMLHttpRequest
var xhrObj = createXMLHTTPObject();
// open and send a synchronous request
xhrObj.open('GET', "script.js", false);
xhrObj.send('');
// add the returned content to a newly created script tag
var se = document.createElement('script');
se.type = "text/javascript";
se.text = xhrObj.responseText;
document.getElementsByTagName('head')[0].appendChild(se);
但您通常不应该使用同步请求,因为这会阻止其他一切。
但话虽这么说,当然在某些情况下这是合适的。
我可能会使用 onload 处理程序将包含函数重构为异步模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)