2012-11-30 15 views
21

Dağıtım için bir JS/PHP eklentisi yapıyorum. Ben kadar yüklemek kadar kolay olmasını istiyorum: AncakJavaScript'te bir pencere yeniden boyutlandırma olay dinleyicisini nasıl ekleyebilirim?

<HTML> 
<HEAD> 
<TITLE>Testing my Plugin</TITLE> 
<?php 
    include 'path/to/myPlugin.php'; 
    echo getMyPluginHeadContent(); 
?> 
</HEAD> 
<BODY> 
<?php 
    echo getMyPluginContent("Arguments will go here"); 
?> 
</BODY> 
</HTML> 

, davada da kullanılmasını gerektiren başka senaryo vardı, bu eklenti bir pencerewindow.onresize geçersiz kılma olmadan dinleyici boyutlandırmak eklemek istediğiniz bu yöntem. document.addEventListener("resize", myResizeMethod, true); gibi herhangi bir javascript komutu var mı? Biliyorum, bu işe yaramıyor, çünkü bu çalışmıyor ve MDN ve W3C, addEventListener argümanlarının ne olduğu konusunda çok muğlak.

window.onresize = myResizeMethod veya <BODY ONRESIZE="myResizeMethod">'u kullanmamı söyleyen bir yanıt istemiyorum, çünkü bunlar eklenti dostu değildir.

+0

olayları kaldırabilir Benzer: İşte bir örnek? – Kyle

+2

Hemen hemen her .sistem = bir .addEventListener içine (, ) – bhamlin

+0

@bhamlin açılabilir: Anlayışlı yorumunu, teşekkür ederim. –

cevap

44

, pencereyle değil belgeye işlevini bağlamak isteyeceksiniz. IE'nin 9'dan küçük sürümlerini desteklemek için attachEvent'u kullanmak isteyeceksiniz. Lütfen attachEvent numaralı telefonun on anahtar kelimesini belirtmenizi gerektirdiğini unutmayın.

if(window.attachEvent) { 
    window.attachEvent('onresize', function() { 
     alert('attachEvent - resize'); 
    }); 
} 
else if(window.addEventListener) { 
    window.addEventListener('resize', function() { 
     console.log('addEventListener - resize'); 
    }, true); 
} 
else { 
    //The browser does not support Javascript event binding 
} 

Eğer `window.addEventListener` denedi sen penceresine bu eklemeye çalıştığınız beri aynı şekilde

if(window.detachEvent) { 
    window.detachEvent('onresize', theFunction); 
} 
else if(window.removeEventListener) { 
    window.removeEventListener('resize', theFunction); 
} 
else { 
    //The browser does not support Javascript event binding 
} 
+6

+1. –

+0

Örnek kodunuzda bir '' un unutulması dışında, bu mükemmel! Teşekkür ederim! – Supuhstar

+0

@Supuhstar Oops, kodu düzeltti. Çalışmayı başardığına sevindim. – Kyle

17

Belgeyi yeniden boyutlandırmazsınız, ancak pencere. Bu çalışır: Pencerenin boyutlandırmak bu işlevi çağırmak için çalışıyoruz beri

window.addEventListener("resize", function(){console.log('resize!')}, true); 
+2

Buna ek olarak, IE <9. – Kyle

+0

@Kyle sürümleri için 'attachEvent 'kullanmak isteyeceksiniz. Bunu bilmiyordum (sitelerim IE8 uyumlu veya jquery tabanlı değil). Kendi cevabınızı oluşturmaktan çekinmeyin. Yorumunuzda pencere ve belge için de biliyorsunuz. –

+0

Teşekkürler. Bir örnekle bir cevap vereceğim. Geçerli bir cevap için – Kyle

İlgili konular