我正在开发一个网站,我有一个外部JavaScript文件链接到站点的每个页面,该文件在触发window.onload事件时执行。 JavaScript在所有不包含任何内联JavaScript的页面上都很好。
任何包含内联JavaScript的页面都包含一个JavaScript函数,该函数在触发window.onload事件时执行。
我遇到的问题是,当触发window.onload时,外部JavaScript不会执行,只有内部JavaScript会执行。看起来好像内联JavaScript函数会覆盖外部JavaScript文件中的函数。
我知道我的外部JavaScript文件首先被执行,然后执行内联JavaScript。无论如何我可以在window.onload上执行这两个函数吗?
答案 0 :(得分:2)
如何将执行第二个的脚本更改为以下内容:
var onload = function () {
// Do something
alert('Hello');
};
if(window.onload) {
// If a function is already bound to the onload event, execute that too.
var fn = window.onload;
window.onload = function () {
fn();
onload();
};
} else {
window.onload = onload;
}
或者使用像jQuery这样的库,您可以这样做:
$(document).ready(function() {
alert('Hello');
}
答案 1 :(得分:0)
这可能比一个正确的修复更能解决问题,但是你可以将内联JS放在html页面的底部,以便在加载页面后自动调用它。这意味着您不必实际使用window.onload()
答案 2 :(得分:0)
两种方式:
1 - 使用addEventListener。
window.addEventListener("load", function(){ /*code*/ }, false);
2 - 使用这样的黑客:
var func = window.onload;
window.onload = function() {
if ( func ) func();
/* code */
};