Tôi hiện đang phát triển Bài kiểm tra Đơn vị cho một phương pháp Javascript để phát hiện sự sẵn sàng của tài liệu. Mã này đã ở cấp khung, vì vậy hãy tránh đề cập đến việc này đang được triển khai trong jQuery hoặc một thư viện khác.Làm thế nào để kích hoạt sự kiện "onload" trên tài liệu trong IE
tôi đã mô phỏng thành công sự kiện 'readystatechange' thay đổi với đoạn mã sau:
var event;
event = document.createEventObject();
event.type = 'readystatechange';
document.fireEvent('onreadystatechange',event);
Tôi thất bại trong việc làm tương tự cho sự kiện 'tải'. Đoạn mã sau dẫn đến lỗi đối số không hợp lệ trong IE7, được gọi bằng cách gọi đến fireEvent trên dòng cuối cùng:
event = document.createEventObject();
event.type = 'load';
document.fireEvent('onload',event);
Có ai đã làm điều này, hoặc không làm điều này trước đây? Tôi cũng quan tâm đến bất kỳ đề xuất nào để kích hoạt sự kiện theo một cách khác.
Edit: sau đề nghị bởi Crescent Fresh, tôi đã thay đổi mã của tôi để:
event = document.createEventObject();
event.type = 'load';
document.body.fireEvent('onload',event);
Không có lỗi hơn, nhưng người nghe cho 'onload' không cháy. Đây là cách tôi định cấu hình nó:
document.attachEvent('onload',listener);
Sự kiện 'tải' thực sự kích hoạt trên' document.body'. Vì vậy, bạn có thể thử thay vì 'document.body.fireEvent ('onload', event)'. Tôi nghi ngờ rằng sẽ thực sự cháy xử lý gắn liền với 'onload' mặc dù. Nếu tôi đã bị sốc ... –
Bạn là 100% đúng. Kích hoạt sự kiện trên document.body có thể được thực hiện mà không có lỗi, nhưng các trình nghe kèm theo document.attachEvent không được kích hoạt. –
@Eric: suy nghĩ nhiều. Đó là một người đàn ông bummer. –