【发布时间】:2010-10-10 08:56:39
【问题描述】:
我正在将使用<body onload="myJS();"> 的页面重构为用户控件。我知道我可以在加载时使用服务器端脚本注册来做到这一点。
如果我想在客户端 (ascx) 执行此操作,我将如何执行此操作?
【问题讨论】:
标签: asp.net javascript
我正在将使用<body onload="myJS();"> 的页面重构为用户控件。我知道我可以在加载时使用服务器端脚本注册来做到这一点。
如果我想在客户端 (ascx) 执行此操作,我将如何执行此操作?
【问题讨论】:
标签: asp.net javascript
取自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 来做这个和很多其他的事情。
【讨论】:
addEvent(window, your_onload_handler) ? your_onload_handler 是指我们要在加载用户控件时调用的函数吗? addEvent 方法有三个参数,你怎么只传了两个?
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>
【讨论】:
OnLoad 通常是一种不好的初始化 JS 的方法,因为它只有在所有资源都完成加载(包括页面中的任何图像)时才会触发。
在 页面 完成加载时调用要执行的 Javascript 的最简单、最可靠的方法是将内联 <script> 块放入 HTML 底部,就在关闭之前</body>标签:
<body>
... your page here ...
<script>myJS();</script>
</body>
</html>
【讨论】: