2015-09-25 16 views
7

Tôi có một số javascript động tạo thành phần, với trình xử lý phần tử sự kiện nhấp ... tập lệnh được bao gồm từ một tên miền khác.firefox - không thể nhận sự kiện cho javascript động

Tuy nhiên với Firefox khi chạy, nó cung cấp cảnh báo bảo mật và không xử lý sự kiện nhấp chuột (Chrome hoạt động tốt).

Một phiên bản đơn giản dưới đây

<!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 bao gồm: Nội dung

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

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

Cảnh báo:

an wrapper từ chối truy cập đến tài sản không xác định trên đặc quyền đối tượng Javascript. Hỗ trợ hiển thị các đối tượng đặc quyền cho nội dung không đáng tin cậy qua tiếp xúcProps đang được xóa dần - sử dụng liên kết WebIDL hoặc Components.utils.cloneInto thay thế. Lưu ý rằng chỉ quyền truy cập thuộc tính bị từ chối đầu tiên từ một đối tượng toàn cục nhất định sẽ được báo cáo.

Trả lời

-1

tôi đã cố gắng mã của bạn ở đây và nó làm việc tốt cho tôi trên Firefox 50.1.0. =/

Tuy nhiên, tôi đặc biệt khuyên bạn nên sử dụng JQuery để xử lý các sự kiện được kích hoạt bởi các yếu tố được tạo động. JQuery xử lý DOM khác nhau, đó là trình duyệt chéo và nó chỉ được thực hiện cho loại tình huống này. Nó có thể giải quyết vấn đề của bạn. = D

Cố gắng và thay đổi html của bạn để

<!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> 

và mã JS của bạn để

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ều đó sẽ làm cho nó hoạt động! Chúc mừng! =)

+0

nhập jQuery? chỉ để sửa nó? Bạn đang giỡn à? – jno

+0

Vâng, tôi nghi ngờ anh ấy sẽ chỉ sử dụng nó một lần. VÀ, nếu anh ấy làm việc với các phần tử html động, thì CÓ, tôi khuyên anh ấy nên sử dụng JQuery để xử lý chúng. JQuery về cơ bản được thực hiện cho việc thực thi DOM trực tiếp và duyệt qua. Ngoài ra, đây là cách dễ dàng và sẽ giúp anh ấy bắt đầu, anh ấy có thể tự phát triển từ đó. Tôi tin mọi người thông minh! =) Hơn nữa, tôi muốn giúp anh ta nhận được bất cứ điều gì anh ta cần làm, hơn là chỉ trích những người kiêu ngạo đang cố giúp đỡ, mà không đưa ra bất kỳ giải pháp nào cho vấn đề: có vẻ như quá trẻ vị thành niên. = P – Vinas

Các vấn đề liên quan