<script src="first.js"></script>
<script src="second.js"></script>first.js
var obj = {
id: 1,
xyz: function(){
}
};我想更新id并在second.js文件中调用xyz函数。最好的方法是什么?因为脚本将异步加载。
second.js
obj.xyz();发布于 2014-02-10 12:13:07
更新
在对这个问题的评论中,你说你没有使用任何类型的脚本加载器。这意味着,根据您引用的标记,首先加载和执行first.js,然后加载和执行second.js。second.js将在first.js完成之前不会加载并运行(或者直到first.js无法加载)。因此,second.js可以完成您展示的内容;除非first.js完全无法加载,否则obj将出现并等待。
最初的答案是基于对脚本异步加载的声明的:
最好的方法是在两者之间建立某种形式的连接或消息传递。
但你可以通过投票来做。
second.js:
(function() {
attempt();
function attempt() {
if (typeof obj !== "undefined") {
// Got it!
obj.xyz();
}
else {
setTimeout(attempt, 50);
}
}
})();发布于 2014-02-10 12:33:48
尝试在窗口对象中强制obj定义为“全局”定义。
window.obj = {
id: 1,
xyz: function(){
alert("hey!");
}
}然后打电话
window.obj.xyz();或
obj.xyz();发布于 2014-02-10 12:20:20
在body标记中添加页面底部的所有脚本,您的脚本就会运行得很好。如果您仍然不确定(虽然没有理由),您可以在下面添加js调用:-
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);或者,如果使用jquery,则可以在以下内容中添加代码:-
$(document).ready(function() {
//your code
});https://stackoverflow.com/questions/21676810
复制相似问题