Trả lời

22

Trong các phiên bản IE> = 9 và tất cả các trình duyệt khác, bạn nên sử dụng phương pháp dispatchEvent:

var event = document.createEvent("HTMLEvents"); 
event.initEvent("change",true,false); 

document.getElementById("id").dispatchEvent(event); 

Check-out http://jsfiddle.net/QKsvv/

+1

Bằng cách kiểm tra 'nếu (id.dispatchEvent)' sau đó 'else if (id .fireEvent) 'Bây giờ tôi có thể sử dụng mã không phải là ie8 để làm việc cho ie9. Hình như IE cuối cùng cũng đang bắt kịp? – styler1972

+0

Đúng vậy. Bạn có thể trích xuất mã kích hoạt thành một phương thức riêng biệt sẽ xử lý tất cả các trình duyệt. – Strelok

+4

Là thông tin bổ sung, tính năng này chỉ hoạt động đối với các phần tử nằm trong DOM trực tiếp. Nếu bạn tự động tạo đối tượng và muốn mô phỏng những thứ như nhấp chuột vào chúng bằng dispatchEvent, bạn * có * để thêm chúng vào DOM trước tiên. Nếu không, bạn vẫn có thể gửi các sự kiện, nhưng bạn sẽ xé mái tóc ra tự hỏi tại sao hàm chạy thành công mà không kích hoạt trình xử lý sự kiện của bạn. –

0

tôi đã tìm thấy một số thread thảo luận về sự cố của bạn. mở this và cố gắng chạy trong ie9.

hy vọng điều đó sẽ hữu ích. cảm ơn!