Tôi cố gắng để phát hiện xem các tập tin javascript hiện tại đang được thực hiện được bao gồm đồng bộ (thông qua một thẻ script thường xuyên)Làm thế nào để phát hiện xem Javascript của bạn đã được bao gồm đồng bộ hoặc không đồng bộ
<script src="myscript.js"></script>
hoặc không đồng bộ qua chèn một phần tử tập lệnh vào DOM theo chương trình, giống như
var script = document.createElement('script')
script.src = 'myscript.js'
document.body.appendChild(script)
và do đó có thể sử dụng hay không document.write
. Tôi đã tìm ra một giải pháp điên rồ để kiểm tra xem các tác phẩm document.write
có hoạt động hay không, xem this gist.
Về cơ bản, nó hoạt động bằng cách sử dụng document.write
để viết ra một phần tử - Tôi đã chọn một thẻ tập lệnh trống. Sau đó, nó truy vấn DOM để xác định liệu phần tử script đó đã được viết thành công hay chưa. Nếu nó là - tập lệnh phải được bao gồm đồng bộ, nếu nó không được - nó được đưa vào không đồng bộ.
Giải pháp này hoạt động trong tất cả các trình duyệt mà tôi đã thử nghiệm cho đến nay (tất cả các trình duyệt chính bao gồm IE7 +) ngoại trừ Opera.
Câu hỏi đặt ra là: có giải pháp nào tốt hơn không?
Lưu ý: Tôi cũng đã thử kiểm tra document.readyState
, nhưng điều đó dường như không hữu ích trong IE.
Cũng lưu ý: Tôi không cần bài giảng document.write
là điều xấu. Tôi biết.
Cập nhật: Hóa ra ngoài không làm việc trên Opera, kỹ thuật của tôi cũng là không đáng tin cậy trong những trường hợp nhất định trong IE và các trình duyệt khác - document.write
thể hoặc không thể làm việc tùy thuộc vào thời gian hoặc kịch bản bộ nhớ đệm. Các spec dường như nói nhiều.
Bạn có chắc chắn bạn không cần bài giảng không ??? Tôi đã sẵn sàng để cung cấp cho bạn một ...: P – Domenic