我正在重构一个使用<body onload="myJS();">
到用户控件的页面。我知道我可以在加载时使用服务器端脚本注册来完成它。
如果我想在客户端(ascx)这样做,我该怎么做?
答案 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>