SORU
17 NİSAN 2010, CUMARTESİ


Parametre, event kullanımını doğru() / attachEvent()?

addEventListener sırasıyla nasıl kullanacağını merak ediyorum attachEvent doğru?

window.onload = function (myFunc1) { /* do something */ }

function myFunc2() { /* do something */ }

if (window.addEventListener) {
  window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) {
  window.attachEvent('onload', myFunc2);
}

 // ...

ya

function myFunc1() { /* do something */ }

if (window.addEventListener) {
  window.addEventListener('load', myFunc1, false);
} else if (window.attachEvent) {
  window.attachEvent('onload', myFunc1);
}

function myFunc2() { /* do something */ }

if (window.addEventListener) {
  window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) {
  window.attachEvent('onload', myFunc2);
}

 // ...

?

Bu çapraz tarayıcı güvenli ya da daha iyisi şöyle gideyim

function myFunc1(){ /* do something */ }
function myFunc2(){ /* do something */ }
// ...

function addOnloadEvent(fnc){
  if ( typeof window.addEventListener != "undefined" )
    window.addEventListener( "load", fnc, false );
  else if ( typeof window.attachEvent != "undefined" ) {
    window.attachEvent( "onload", fnc );
  }
  else {
    if ( window.onload != null ) {
      var oldOnload = window.onload;
      window.onload = function ( e ) {
        oldOnload( e );
        window[fnc]();
      };
    }
    else
      window.onload = fnc;
  }
}

addOnloadEvent(myFunc1);
addOnloadEvent(myFunc2);
// ...

VE: myfunc2 IE 7 için sadece olduğunu Söylüyorlar. Ne kadar doğru/tercih edilen yöntem buna göre değiştirin.

Çok teşekkür ederim!

CEVAP
5 HAZİRAN 2012, Salı


Hem kullanımı hem olay parametre için biraz farklı bir sözdizimi almak olsa da, benzer:

parametre, eventmdn reference):

obj.addEventListener('click', callback, false);

function callback(){ /* do stuff */ }

addEventListener Events list.

attachEvent (msdn reference):

obj.attachEvent('onclick', callback);

function callback(){ /* do stuff */ }

attachEvent Events list.

Argümanlar

Bu yöntemlerin her ikisi de bağımsız değişkenleri aşağıdaki gibidir:
1. Olay türü.
2. Olay tetiklendikten sonra Ara fonksiyonudur.
3.(addEventListener)True ise, kullanıcı capture başlatmak isteyen gösterir.

Açıklama

Her iki yöntem bir öğe için bir olay takma aynı hedefe ulaşmak için kullanılır.
Aradaki fark şu attachEvent eski trident render motorlarında kullanılabilir (IE5IE5-8*) ve addEventListener diğer tarayıcıların büyük bir çoğunluğu (FF, Y, Opera, 9) uygulanan U3 bir standarttır.

Smitty bir göz atmalısınız tavsiye olarak sağlam bir çapraz Dustin Diaz addEvent bir çerçeve kullanmadan uygulama tarayıcı.

Sağlam çapraz tarayıcı olayı Diaz çözüm almazsınız normalizations dahil olmak üzere destek framework kullanın.

*9-10 her iki yöntem, geriye doğru uyumluluk için destek.

attachEvent işaret Luke Puplett sayesinde İE11 kaldırıldı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010
  • Visual Life

    Visual Life

    3 Temmuz 2006