替换用户控件中的body.onload

时间:2009-02-27 16:13:51

标签: asp.net javascript

我正在重构一个使用<body onload="myJS();">到用户控件的页面。我知道我可以在加载时使用服务器端脚本注册来完成它。

如果我想在客户端(ascx)这样做,我该怎么做?

3 个答案:

答案 0 :(得分:2)

取自http://snipplr.com/view/3116/cross-browser-add-event-listener/

// Cross-browser implementation of element.addEventListener()

function addEvent(evnt, elem, func) {
    if (elem.addEventListener) // W3C DOM
        elem.addEventListener(evnt,func,false);
    else if (elem.attachEvent) { // IE DOM
        var r = elem.attachEvent("on"+evnt, func);

    return r;
}

像这样使用它:addEvent(window, your_onload_handler)。或者你可以只使用jquery和其他很多东西。

答案 1 :(得分:2)

Romme的客户端方法是最好的。但是,如果有人想知道如何使用ASCX文件中的服务器端代码来做到这一点,请将其粘贴在模板的顶部:

<script runat="server">

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    string strScript = "myJS();";
    Page.ClientScript.RegisterStartupScript(this.GetType(), "OnLoadScript_" + this.ClientID, strScript, true);
}

</script>

答案 2 :(得分:1)

OnLoad 通常是一种初始化JS的错误方法,因为它只在所有资源加载完成后触发(包括页面中的任何图像)。

页面完成加载时调用要执行的Javascript的最简单,最可靠的方法是将内联<script>块放入HTML的底部,就在之前结束</body>标记:

 <body>
   ... your page here ...
   <script>myJS();</script>
 </body>
</html>