Tôi thừa kế đoạn mã này và nó có vẻ không tối ưu và có thể không chính xác vì nó thêm trình lắng nghe sự kiện vào cả đối tượng cửa sổ và tài liệu. Tuy nhiên, nó hoạt động đúng cách trừ blackberry 5.0. Ai đó có thể giải thích nếu tất cả điều này được thiết lập chính xác hoặc nếu có bất kỳ đề xuất nào để làm cho nó tốt hơn và/hoặc sắp xếp hợp lý hơn?Cross Browser Dom Ready
if (document.readyState === "complete")
callback();
else if (document.addEventListener)
{
document.addEventListener("DOMContentLoaded",callback,false);
window.addEventListener("load",callback,false);
}
else if(window.attachEvent)
{
document.attachEvent("onreadystatechange", callback);
window.attachEvent("onLoad",callback);
} else
setTimeout(callback,2000);
Đặt tất cả JS ở cuối tài liệu. Nó là khá nhiều như nhau. – Saxoier
không, không phải nếu bạn tải tập lệnh không đồng bộ. – VinnyD
Nếu bạn sử dụng không đồng bộ. các kịch bản hơn là bạn không nên sử dụng 'DOMContentLoaded' hoặc cách tôi đề xuất vì việc thực thi async này. tập lệnh có thể xảy ra sau khi sự kiện này được kích hoạt hoặc Trình phân tích cú pháp HTML đến cuối tệp html. Do đó chỉ có 'window.onload' và' xhr.onreadystatechange' có thể được sử dụng - cả hai đều tương thích với trình duyệt chéo. – Saxoier