2009-06-03 37 views
20

Vücudun yükleme etkinliğinde aşağıdaki javascript işlevinin çalıştırıldığı bir aspx'im var.Sayfa javascript olayına kanca yükleme

<body onload="startClock();"> 

Ancak, vücut etiket artık aspx içinde yok yani bir ana sayfasını kullanmak için aspx kuruyorum. Sayfa vurulduğunda çalıştırılmak üzere startClock işlevini kaydetmeye ve hala bir ana sayfayı kullanmasına nasıl giderim?

cevap

30

açıkça window.onload atamak veya bir çerçeve kullanmak istemiyorsanız düşünebilirsiniz:

<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

+0

+1 - Ben bu cevabı yazmak için çok tembel davrandım, ama birisinin bunu yapmasını öneriyorum, başlangıçta belirttiğiniz aynı varsayımlarla. –

+0

Tabii ki, ayrıntıları bir çığlık biraz soyut - umarım bu OPP için açıktır ... –

+0

Burada gerçekten belirgin bir şey eksik olmalı, ancak 'if' kod bloğu nereye gidiyor? Bunu sadece

1

takın sayfasının gövdesinde bu yerde:

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

bu bir eğer tek sorun Diğer kod, aynı zamanda kompozit sayfaya çekti, aynı şeyi yapar - kazanır son. Window.onload ifadesinin yeniden tanımlanması işe yaramaz, ancak önceden tanımlanmadığından emin olmak için dikkatli olunmalıdır! –

+0

Çok doğru! Hatırlatma için teşekkürler. –

+0

"window.onload" öğesinin tanımlanıp tanımlanmadığını sınayan bir kod gördük ve eğer öyleyse temp değişkenine atıfta bulunarak "new" 'window.onload' içinde bu değişkeni" çağırır ". –

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

veya kullanan prototip

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

En temiz yol, jQuery gibi bir javascript çerçevesi kullanıyor. Eğer kısa $(); tarzını beğenmediğiniz,

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

Veya: jQuery olarak aşağıdaki şekilde yük fonksiyonu tanımlayabiliriz

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

Anlaşmalı. Bu soruyu yayınladıktan birkaç ay sonra jQuery kullanmaya başladım (neredeyse bir yıl önce) ve bunu seviyorum. – Jagd

+0

jQuery'nin daha yeni sürümlerinde $ (document) .ready (...) stili gerekir. –

+1

Hayır. Hiçbir zaman sürümlerinde '$()' davranışı değişti, fakat '$ (some_function)' değişmedi. – ThiefMaster

İlgili konular