HTML <body> onLoad 事件会覆盖 javascript 窗口的 onload 事件吗?

use*_*476 7 javascript onload

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

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

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

window.onload = onPageLoad; 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

mpl*_*jan 5

取决于浏览器。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')
  });
}
Run Code Online (Sandbox Code Playgroud)
<body onload="alert('body onload')">

</body>
Run Code Online (Sandbox Code Playgroud)

AND/OR 替换

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')
  });
}
Run Code Online (Sandbox Code Playgroud)
<body onload="alert('body onload')">

</body>
Run Code Online (Sandbox Code Playgroud)