2015-09-25 18 views
7

Öğeleri oluşturan bir dinamik javascript'im var, click olayı öğesi işleyicisi ... komut dosyası başka bir etki alanından geliyor.firefox - dinamik javascript için olay alamıyor

Ancak Firefox'ta çalışma zamanında bir güvenlik uyarısı verir ve tıklama olayını işlemez (Chrome iyi çalışıyor).

<!DOCTYPE html> 
<html> 
<head><meta charset="UTF-8"></head> 
<body> 
<h2 id="headertitle">TEST</h2> 
<br/> 

<script type="text/javascript" src="somewhereelse.com/script.js"> 
</script> 
</body> 
</html> 

Javascript altında bir basitleştirilmiş versiyonu şunlardır:

document.getElementById("headertitle").insertAdjacentHTML('beforeBegin', 
      "<button value='TEST' onclick='clickHandler(this)' >Button</button>"); 

function clickHandler(evt){ 
    alert("clicked"); 
} 

Uyarı mesajı:

Güvenlik sarıcı ayrıcalıklı JavaScript nesne üzerinde tanımsız özelliğine erişim engellendi. güvenilmeyen içeriğe exposedProps aracılığıyla ayrıcalıklı nesneler sunmak için destek yavaş yavaş kaldırılıyor - WebIDL bağlamaları veya Components.utils.cloneInto komutunu kullanın. yalnızca belirli bir global nesneden ilk reddedilen özellik erişiminin bildirileceğini unutmayın.

cevap

-1

Kodunuzu burada denedim ve Firefox 50.1.0 üzerinde benim için iyi çalıştı. =/

Ancak, dinamik olarak oluşturulan öğeler tarafından tetiklenen olaylarla başa çıkmak için JQuery'yi kullanmanızı kesinlikle öneririz. JQuery DOM'ı farklı şekilde işler, çapraz tarayıcıdır ve sadece bu tür bir durum için yapılmıştır. Problemini çözebilir. = D

deneyin ve o iş yapmak gerekir

document.getElementById("headertitle").insertAdjacentHTML('beforeBegin', 
      '<button value="TEST" class="clickable" id="btn1">Button</button>'); 

$('.clickable').on('click', function() { 
    alert($(this).attr('id') + ' was clicked'); 
}); 

için

<!DOCTYPE html> 
<html> 
<head><meta charset="UTF-8"></head> 
<body> 
<h2 id="headertitle">TEST</h2> 
<br/> 
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
<script type="text/javascript" src="somewhereelse.com/script.js"> 
</script> 
</body> 
</html> 

ve JS koduna html değiştirmek! Şerefe! =)

+0

ithalat jQuery? sadece düzeltmek için? Şaka mı yapıyorsun? – jno

+0

Eh, sadece bir kez kullanacağından şüpheliyim. VE, eğer dinamik html elemanları ile çalışıyorsa, o zaman YES, bunları işlemek için JQuery'yi kullanmasını şiddetle tavsiye ederim. JQuery temel olarak DOM yürütme ve çapraz tarama için hazırlanmıştır. Artı, onun etrafında kolay bir yoldur ve onu başlatacak, oradan kendisi tarafından evrim geçirebilir. İnsanların akıllı olduğuna inanıyorum! =) Bundan başka, ne yapması gerekiyorsa ona yardım etmekteyim, yardım etmeye çalışan kibirli kişileri eleştirmekten ziyade, problem için herhangi bir çözüm sunmadan: bunu yapmak için çok küçük bir yol gibi görünüyor. P = – Vinas

İlgili konular