Bu sorunun ayrıntılarına girmeden önce durumu netleştirmek istiyorum. Web analitik şirketimiz, büyük siteler için bir danışman olarak çalışır ve (tek bir SCRIPT etiketi eklemekten başka), sayfaların kendileri üzerinde hiçbir kontrolü yoktur.Güvenli, evrensel, addEventHandler'ı Javascript'te kullanma şekli?
Mevcut komut dosyası, sayfadaki "yeni" (addEventListener veya attachEvent) işleyicilerinden tamamen habersiz "eski" yolunu (orijinal bir işleyiciyi de yürüten, element.onclick = blah'ın süslü bir sürümünü) kullanan işleyicileri yükler. Komutumuzu, çok fazla özel geliştirme gerektirmeden daha fazla sitede yayınlanabilir hale getirmek için bunu düzeltmek isteriz.
Burada ilk düşüncede kendi komut dosyasımızın addEventListener/attachEvent olması gerekiyordu, ancak bu bir sorun sunuyor: müşterinin sitesinden "eski" yolunu kullanarak bir işleyiciyi ayarlıyor, "yeni kurduğumuz işleyiciyi sileceğiz" "yol. Hızlı ve kirli testler, tüm tarayıcı aralığını test etmeme rağmen IE7 ve FF3'te bu durumun gerçekleştiğini gösteriyor. Ayrıca, sayfanın etkinlik işleyicileri zaten ayarlandıktan sonra "yeni" yolunu kullanırsak, işleyicilerini de silebiliriz.
Sorunuz: Javascript'te, sayfada diğer olay işleyicilerinin nasıl yüklendiğinden bağımsız olarak çalışan addEventListener/attachEvent kullanarak bir olay işleyicisi eklemek için hangi güvenli tekniği kullanabilirim?
Lütfen unutmayın: komut dosyasının kurulu olduğu siteyi değiştirmenin hiçbir yolu yoktur. (Bunu vurgulamak zorundayım çünkü bu gibi sorulara verilen varsayılan cevap her zaman "her şeyi aynı şekilde yapmak için sayfayı yeniden yaz.")
Ve bu, IE'de veya başka herhangi bir tarayıcıda sorun değil. Gerçekte soran kişi tarafından "tahmin" davranış, bu herhangi bir istemci tarafı kodu –
Argh için ciddi sorunlara yol açacaktır, haklı görünüyorsun. Soru için özür dileriz, açıkçası, hata bir berbat bir test vakasıydı ve tarayıcıdaki herhangi özel bir hata değildi.(En azından IE7 ve FF3.) Bana doğru yönde işaret ettiğiniz için teşekkürler. – blakeyrat