应该对window.onload进行两次调用是否有效?

ubi*_*con 5 javascript

我有两个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)


Dar*_*rov 5

第二项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)


ubi*_*con 1

我最终接受了 zzzzBov 使用 jQuery 的 $(document).ready(doAction); 的建议。功能。现在,我在单个页面上包含了 multiple.js,所有这些都使用此调用,并且没有冲突。