将HTML onLoad events overwrite javascript window onload event?

问题描述 投票:4回答:1

我有一个HTML页面和一个javascript函数附加到<body> onLoad事件。

我想在页面加载时显示一个消息对话框。由于某些原因,我无法编辑附加到此onLoad事件的javascript函数。

所以我用一个函数创建了一个新的javascript文件,它将显示消息对话框。然后我在我的javascript文件中添加了这一行

window.onload = onPageLoad; 

onPageLoad()是我的功能,可以显示消息对话框。

我使用脚本标记在我的HTML中附加了这个javascript文件。当我运行这个HTML文件时,没有调用onPageLoad()函数。

我想知道<body>标签,onLoad事件是否覆盖了窗口onload。如果是这样,有人可以帮助我以某种方式实现此功能。

请记住,我无法编辑我的HTML文件,我只能编写新的javascript文件。谢谢。

javascript onload
1个回答
3
投票

取决于浏览器。 window.onload目前在OSX上覆盖Chrome,Firefox和Safari中的body onload

您可以将函数添加到onload:

window.onload = function() {
  alert('window.onload')
}

if (window.addEventListener) {
  window.addEventListener('load', function() {
    alert('addEventListener')
  }, false);
} else if (window.attachEvent) { // IE < 9
  window.attachEvent('onload', function() {
    alert('attachEvent')
  });
}
<body onload="alert('body onload')">

</body>

和/或替换

var bodyOnload = document.body.onload;
window.onload = function() {
  alert('window.onload')
  bodyOnload()
}

if (window.addEventListener) {
  window.addEventListener('load', function() {
    alert('addEventListener')
  }, false);
} else if (window.attachEvent) { // IE < 9
  window.attachEvent('onload', function() {
    alert('attachEvent')
  });
}
<body onload="alert('body onload')">

</body>
© www.soinside.com 2019 - 2024. All rights reserved.