我正在重構將<body onload="myJS();">
用於用戶控件的頁面。我知道我可以在加載時使用服務器端腳本註冊。替換用戶控件中的body.onload
如果我想在客戶端(ascx)執行此操作,我該怎麼做?
我正在重構將<body onload="myJS();">
用於用戶控件的頁面。我知道我可以在加載時使用服務器端腳本註冊。替換用戶控件中的body.onload
如果我想在客戶端(ascx)執行此操作,我該怎麼做?
從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來做這個以及其他許多事情。
Romme的客戶端方法是最好的。
<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:不過爲了以防萬一有人想知道如何在ASCX文件中使用服務器端代碼來執行它,在你的模板頂部堅持這,因爲只有在所有資源完成加載(包括頁面中的任何圖像)時纔會觸發它。
最簡單,最可靠的方法來調用JavaScript要當頁面完成加載是把一個內聯<script>
塊到HTML的底部,收盤</body>
tag之前執行:
<body>
... your page here ...
<script>myJS();</script>
</body>
</html>
您能否解釋爲什麼在所有資源加載完成後初始化JS都不好? – DotnetDude 2009-02-27 23:49:43
請詳細說明一下嗎?我們在哪裏給'addEvent(window,your_onload_handler)`調用?使用`your_onload_handler`是否意味着我們想要在用戶控件加載時調用的函數? `addEvent`方法有三個參數,你怎麼只傳遞兩個參數? – 2015-10-12 12:28:29