我有一个正在使用 document.createElement() 加载的外部 js 文件(我无法修改),我需要从中访问一个变量。问题是,我不知道它什么时候完成加载。我尝试了 jQuery 的文档就绪功能,但它似乎比 javascript 文件部署得更快。我可以像这样访问变量:
setTimeout("console.log(swifttagdiv.firstChild.firstChild.src)", 5000);
但这只是一个检查变量是否是全局变量的测试。有什么想法吗?
最佳答案
您可以使用 Javascript 注入(inject)脚本,而不是将其放入您的页面。这样您就可以控制何时加载它。
这是我用来在页面中动态注入(inject)代码的函数:
function inject(src, cb, target){
target = target || document.body;
var s = document.createElement('SCRIPT');
s.charset = 'UTF-8';
if(typeof cb === 'function'){
s.onload = function(){
cb(s);
};
s.onreadystatechange = function () {
(/loaded|complete/).test(s.readyState) && cb(s);
};
}
s.src = src;
target.appendChild(s);
return s;
}
使用它:
inject('/path/to/file.js', function(script){
//your code here
})
关于javascript - 从动态加载的外部javascript文件访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897414/