2011-03-14 12 views
71

Ben eğer deyim koşulları dışarı yorumladı ettik ve şimdi onun forefox ile çalışan firefoxEvent.srcElement'i Firefox'ta nasıl çalıştırabilirim ve bunun anlamı nedir?

if(event.srcElement.getAttribute("onclick") == null){ 
...code.. 
document.mainForm.submit(); 
} 

ile imcompatible bir web sayfası yapabilir şirketimin web sitesinde bir if ifadesi yoktur. Benim sorum şu, event.srcElement.getAttribute ("onclick") nedir, önemli, gelecekte sorunlara neden olur mu. Aynı zamanda, bu durumun yerine geçebilecek bir şey var mı?

Düzenleme:

function gotoRDManagerPT(PTId, bDDetailId) { 
     if(!proceed()) return false; 
     var target = event.target || event.srcElement; 
     if(event.target.getAttribute("onclick") == null) { 
      document.mainForm.displayRDManagerPT.value = "true"; 
      document.mainForm.PTId.value = PTId; 
      document.mainForm.bDDetailId.value = bDDetailId; 
      document.mainForm.submit(); 
     } 
    } 
+2

"event.srcElement" için hızlı bir Google arama vermiştir [bu açıklama ve çözüm] (http://forums.mozillazine.org/ viewtopic.php? f = 25 & t = 821.675). –

cevap

151

srcElement aslen IE gelen tescilli bir özelliktir. standartlaştırılmış mülkiyet target geçerli:

var target = event.target || event.srcElement; 

if(target.onclick == null) { // shorter than getAttribute('onclick') 
    //... 
    document.mainForm.submit(); 
} 

Ayrıca daha çapraz tarayıcı bilgisi için quirksmode.org - Event properties de bakabilirsiniz. o ne yaptığını soruya gelince


:

event.target/event.srcElementevent büyüdü eleman başvuru içeriyor. getAttribute('onclick') == null, tıklama olay işleyicisinin inline event handling aracılığıyla öğeye atanıp atanmadığını denetler.

Önemli mi? Söyleyemeyiz çünkü ...code..'un ne yaptığını bilmiyoruz.

+0

Bu felix için teşekkürler, ancak hala bir javascript hatası alıyorum "olay tanımlanmamış [Bu Hataya Gitti] var target = window.event.target || event.srcElement;" herhangi bir fikir neden? – code511788465541441

+1

@ user521180: Diğer tüm tarayıcılarda, etkinlik "window" üzerinden kullanılamaz, ancak olay işleyicisine ilk argüman olarak iletilir. Bu nedenle, "yourHandler (event) işlevini {event = event || window.event; var target = event.target || event.srcElement; ...} '. Veya daha fazla yardıma ihtiyacınız varsa, kodun içerdiği kodu gönderin. –

+0

Orijinal yazımı, tüm işlevini – code511788465541441

5

IE'de, olay nesnesi zaten pencere nesnesinde kullanılabilir; Firefox'ta, olay işleyicisinde bir parametre olarak geçirilir.

Örnek

JavaScript:

function toDoOnKeyDown(evt) 

{ 

    //if window.event is equivalent as if thie browser is IE then the event object is in window 
    //object and if the browser is FireFox then use the Argument evt 

    var myEvent = ((window.event)?(event):(evt)); 
    //get the Element which this event is all about 

    var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); 
    //To Do --> 

} 

HTML:

<input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/> 

biz html'nin işlevi çağrıldığında biz her ihtimale karşı bir parametre event eklemiş fark olarak tarayıcı Firefox'tur.

Bir makalede, IE'deki olay nesnesinin window.event ve Firefox'ta bir parametre olarak belirtmemiz gerektiğini okudum. durumda

bunu kodda bağlı olması gerekir:

document.getElementById('txt_Name').onkeydown = function(evt) { 
    var myEvent = ((window.event)?(window.event):(evt)); 


    // get the Element which this event is all about 

    var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); 
    // To Do --> 
}; 
+1

Edit iam için teşekkürler sadece burada yeni :) :) thanxs tekrar – Marwan

+0

Bu fonksiyona başka bir değer aktarıyorsanız ne olacak? İkinci parametre olarak "evt" ekliyor musunuz? Javascript sonra olay nesnesinin hangi parametresi olduğunu biliyor? İlk parametre olmak zorunda mı? ya da son? – Vincent

İlgili konular