<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();
答案 0 :(得分:1)
<强>更新强>:
在对这个问题的评论中,你说过你没有使用任何类型的脚本加载器。这意味着,给定您引用的标记,首先加载并执行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);
}
}
})();
答案 1 :(得分:0)
尝试强制obj定义为&#34; global&#34;在窗口对象中定义它
window.obj = {
id: 1,
xyz: function(){
alert("hey!");
}
}
然后致电
window.obj.xyz();
或
obj.xyz();
答案 2 :(得分:-1)
在body标签内的页面底部添加我们所有的脚本,你的脚本运行得很好。如果你仍然不确定(虽然没有理由)你可以在里面添加你的js调用: -
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);
如果您使用的是jquery,那么您可以在其中添加您的代码: -
$(document).ready(function() {
//your code
});