HTML onLoad事件会覆盖javascript窗口onload事件吗?

时间:2011-03-04 13:59:47

标签: javascript onload

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

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

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

window.onload = onPageLoad; 

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

我使用脚本标记将此javascript文件附加到我的HTML中。当我运行此HTML文件时,onPageLoad()函数未被调用。

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

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

1 个答案:

答案 0 :(得分: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>