我有两个JavaScript块,它们都通过调用函数winodow.onload.其中一个函数在每个页面上调用,但另一个函数仅在一个特定页面上调用.在该页面上,一个功能可以工作,但另一个功能不起作用,我没有收到任何我能看到的错误.
两个函数是否window.onload在不同的脚本块中调用是否重要(参见示例)?这不应该工作吗?
<!--some html-->
<script language="JavaScript" type="text/javascript">
function firstFunction(){
//do stuff
}
window.onload = firstFunction;
</script>
<!--some html-->
<script language="JavaScript" type="text/javascript">
function secondFunction(){
//do stuff
}
window.onload = secondFunction;
</script>
<!--some html-->
Run Code Online (Sandbox Code Playgroud)
更新:
我最终采用了zzzzBov建议使用jQuery的$(document).ready(doAction);功能.现在我.js在一个页面上都有多个使用此调用,并且没有冲突.
Nik*_*ani 13
注册事件处理程序的推荐最佳实践是使用"addEventListener"(请参阅https://developer.mozilla.org/en/DOM/element.addEventListener).使用此方法可确保处理程序是附加的,并且不会替换现有的处理程序.
function something() {alert("1");}
function somethingElse() {alert("2");}
window.addEventListener("load", something, false);
window.addEventListener("load", somethingElse, false);
Run Code Online (Sandbox Code Playgroud)
第二项onload任务是删除第一项.因此,如果您window.onload在同一页面上有两个指向两个不同处理程序的任务,则第二个将获胜.您需要将它们合并为一个:
<script type="text/javascript">
function firstFunction(){
//do stuff
}
</script>
<!--some html-->
<script type="text/javascript">
function secondFunction(){
//do stuff
}
</script>
<script type="text/javascript">
window.onload = function() {
firstFunction();
secondFunction();
};
</script>
Run Code Online (Sandbox Code Playgroud)
我最终接受了 zzzzBov 使用 jQuery 的 $(document).ready(doAction); 的建议。功能。现在,我在单个页面上包含了 multiple.js,所有这些都使用此调用,并且没有冲突。