asp.net – 有没有= window.onload在Javascript?

前端之家收集整理的这篇文章主要介绍了asp.net – 有没有= window.onload在Javascript?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近我想出了以下问题:

在我网站的所有html页面中,我在body onLoad事件中调用一个函数

<body onLoad="func1();">

这是我的html模板的一部分,所以它出现在我网站的每个页面,我不能改变.现在,这个协议是在某些页面上,我需要调用一些其他函数onload,我尝试使用window.onload属性,但它会擦除func1的调用

我现在可以说:

window.onload = func2(); //where func2() calls to func1()

但这看起来很肮脏?不是吗

那么,有没有办法为那些即将被执行的onload添加一些功能,而不会删除旧的?另外我使用asp.net,如果这可以帮助…

谢谢!

解决方法

您可以使用jQuery链接加载处理程序.反复使用jQuery.load或jQuery(document).ready将链接你的处理程序(我相信).你的另一个选择是以编程方式执行,这意味着你需要一个辅助功能,它将为你链接你的负载处理程序.您可以使用闭包(或匿名函数)来执行此操作:
var addOnLoadHandler = function(newHandler) {

    if (typeof window.onload != 'function') {
        window.onload = newHandler;
    }

    else {
        var oldHandler = window.onload;
        window.onload = function() {
            if (oldHandler) {
                oldHandler();
            }
            newHandler();
        };
    }
};

你将不得不以编程方式绑定你的功能,所以你必须做:

addOnLoadHandlers(function() {
 alert("Hi I am the first onLoad handler!");
});

addOnLoadHandlers(function() {
 alert("Hi I am the second onLoad handler!");
});

在一个javascript文件(或在您的html文件).

另一种方法是使用数组:

var onloaders = new Array();

function runOnLoads() {
    for (i = 0; i < onloaders.length; i++) {
        try {
            var handler = onloaders[i];
            handler();
        } catch(error) {
            alert(error.message);
        }
    }
}

function addLoader(obj) {
    onloaders[onloaders.length] = obj;
}

在您的HTML或Javascript文件中:

addLoader(function() {
 alert("Hi I am the first onLoad handler!");
});

addLoader(function() {
 alert("Hi I am the second onLoad handler!");
});

然后在你的html中,你可以做< body onload =“runOnLoads()”>

猜你在找的asp.Net相关文章