本文介绍如何处理window.onload多次赋值导致的覆盖问题。通过判断当前onload是否存在,将原有函数重命名并保存,再重新定义onload以依次执行原函数与新回调,确保多次加载事件均能正常触发。
处理window.onload多次调用的方案
在网页开发中,大家可能都使用过window.onload来执行窗口加载后的逻辑。然而,当页面中多次使用window.onload时,后面的赋值会覆盖前面的函数,导致之前的回调无法执行。那么,该如何判断并处理这种情况呢?可以参考以下代码实现。
<script>
function onloadCallback(){
//Todo
}
if (window.onload) {
var onload_random = 'onload'+Math.random();
window[onload_random] = window.onload;
window.onload = function (){
window[onload_random]();
onloadCallback();
};
}
else {
window.onload = function (){
onloadCallback();
};
}
</script>