我正在尝试将一些变量放入我正在加载的脚本中。目前,我喜欢
window.myApp = {
id: ''
};
我正在加载像
这样的javascript(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://blah.com/widget.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
})();
widget.js
有名称空间window.myApp
,我正试图将.id
加入其中?我怎么能这样做?
答案 0 :(得分:1)
在widget.js中你可以这样做:
var alreadyDefinedProps = window.myApp;
window.myApp = {
// whatever properties widget.js has currently
}
if (alreadyDefinedProps) {
for (var prop in alreadyDefinedProps)
window.myApp[prop] = alreadyDefinedProps[prop];
}
即,存储对现有window.myApp
对象的引用,然后将window.myApp
设置为另一个对象,然后复制属性。您可以添加if
测试来处理在两个JS文件中定义相同属性的情况。
答案 1 :(得分:0)
您需要为要插入的脚本标记的load
事件设置事件处理程序,如下所示:
if (s.attachEvent) {
s.attachEvent("onload", function () {
window.myApp.id = '';
});
} else {
s.addEventListener("load", function () {
window.myApp.id = '';
});
}
这为脚本的load
事件添加了回调,即使对于IE也是如此。在显示s.async = true;
答案 2 :(得分:0)
加载脚本后,您可以从myApp对象读取或写入属性。要检测何时加载了异步脚本,您可以在加载时捕获该事件。有关如何执行此操作的详细信息,请参阅this reference。