问题描述
- javascript addLoadEvent函数为什么在页面加载后调用的函数没有执行
-
# 函数如下 function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload !='function'){ window.onload=func; } else{ window.onload=function(){ oldonload(); func(); } } }
function loadEvents() {
// home
prepareSlideshow();
// about
prepareInternalnav();
// photos
preparePlaceholder();
prepareGallery();
// live
stripeTables();
highlightRows();
displayAbbreviations();
// contact
focusLabels();
prepareForms();
}// Load events
addLoadEvent(highlightPage);
addLoadEvent(loadEvents);函数我可以保证没写错,我是在看javasript DOM编程艺术这边书12章编写的时候出的问题,函数没有被执行,我试过火狐断点调试,并没有看出什么错误。。
解决方案
highlightPage函数没见你在哪里定义的,f12打开浏览器开发工具看报什么错误
解决方案二:
批量处理页面加载后执行得javascript函数
解决方案三:
<!DOCTYPE html>
MyHtml.html
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/JavaScript">
alert("hello");
function told(){
alert("come on");
};
function addLoadEvent(func){
alert("2423");
var oldonload=window.onload;
alert(oldonload);//为null
if(typeof window.onload !='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
function loadEvents() {
// home
prepareSlideshow();
// about
prepareInternalnav();
// photos
preparePlaceholder();
prepareGallery();
// live
stripeTables();
highlightRows();
displayAbbreviations();
// contact
focusLabels();
prepareForms();
}
//addLoadEvent(highlightPage);
//addLoadEvent(loadEvents);
</script>
测试
测试1
测试2
我好像可以调用,通过点击按钮调用的,只是不太明白你是什么意思,是不是想要达到这样的效果。
解决方案四:
//addLoadEvent(highlightPage);
//addLoadEvent(loadEvents);
</script>
测试
解决方案五:
如果我猜的没错,你应该是要实现传统事件绑定的覆盖问题,解决方法将以前存在的相同事件存储起来,然后先执行第一个事件,再执行第二个事件,代码如下:
window.onload = function(){
fun();
};
if(window.onload){
var saved = null;
saved = window.onload;
}
window.onload = function(){
if(saved) saved();
fun2();
};
解决方案六:
如果需要执行多个onload函数,请参考这个。
/*
* 添加window的onload触发器,避免多个onload无法执行的情况
*/
var addWinloadListener:=function (func) {
//如果没有onload,则直接赋值,不用添加监听事件
if (!window.onload) {
window.onload = func;
} else {
if (window.addEventListener) {
window.addEventListener("load", func, false);
} else if (script.attachEvent) {
window.attachEvent("onload", func);
}
}
}