2009-06-03 87 views
20

我有一個aspx,它在正文的onload事件期間運行了以下javascript函數。將一個JavaScript事件掛載到頁面加載

<body onload="startClock();"> 

但是,我將aspx設置爲使用母版頁,因此body標籤不再存在於aspx中。我如何着手註冊startClock函數以在頁面被擊中時運行並仍然使用masterpage?

回答

30

如果你不想明確指定的window.onload或使用框架,考慮:

<script type="text/javascript"> 
function startClock(){ 
    //do onload work 
} 
if(window.addEventListener){ 
    window.addEventListener('load',startClock,false); //W3C 
} 
else{ 
    window.attachEvent('onload',startClock); //IE 
} 
</script> 

http://www.quirksmode.org/js/events_advanced.html

1

插入這在任何地方的頁面的正文:

<script type="text/javascript"> 
window.onload = function(){ 
    //do something here 
} 
</script> 
+6

這一個是,如果唯一的問題其他代碼也被拉入複合頁面,做同樣的事情 - 持續勝利。重新定義window.onload的作品,但應注意確保它尚未被定義! – 2009-06-03 19:23:19

+0

非常真實!感謝您的提醒。 – 2009-06-03 19:35:55

+0

我看過代碼,測試是否定義了`window.onload`,如果是,則引用它在一個臨時變量中,然後從* new *`window.onload`中調用該變量。 – 2011-08-02 21:28:51

0
Page.ClientScriptManager.RegisterStartupScrip(this.GetType(), "startup", "startClock();", true); 

或使用原型

document.observe("dom:loaded", function() { 
    // code here 
}); 
1

最簡潔的方法是使用像jQuery這樣的JavaScript框架。 在jQuery中,你可以通過以下方式定義上載功能:

$(function() { 
    // ... 
}); 

或者,如果你不喜歡短$();風格:

$(document).ready(function() { 
    // ... 
});