Tôi đang cố gắng tìm ra một vấn đề với một số mã tôi đã kế thừa.Tương tác giữa jQuery .ready() và <script defer>
Tôi có một trang HTML với
<script type="text/javascript" src="file1.js" defer="defer"></script>
<script type="text/javascript" src="file2.js" defer="defer"></script>
</body>
</html>
file1.js đã
FOO = {
init : function() {
var bar = BAR;
}
}
$(document).ready(FOO.init);
file2.js đã
var BAR = {
}
Bởi vì thuộc tính Hoãn trên các yếu tố, là nó an toàn để giả định rằng khi các cuộc gọi .ready()
FOO.init()
rằng BAR
có thể vẫn chưa được xác định tại thời điểm đó b/c mã số trong file2.js
chưa được thực hiện do thực thi hoãn lại?
Điều này phù hợp với lỗi tôi đang cố gắng theo dõi (chỉ xảy ra không thường xuyên trong IE), nhưng tôi thực sự muốn hiểu lý do tại sao điều này xảy ra trước khi tôi làm việc trên một giải pháp. Tôi không biết tại sao nhà phát triển ban đầu sử dụng defer
, ngoài lời khen khó hiểu về "anh ấy phải" làm theo cách này.
Không có câu trả lời, nhưng tôi cảm thấy với bạn, con người. –
Bạn có hiểu thuộc tính 'defer'attribute không? Bởi vì có vẻ như với tôi đó là điều rất phổ biến để làm ... –
Tôi đoán nhà phát triển ban đầu muốn một tập lệnh khác được tải trước khi file1.js và file2.js (hoặc anh ta không biết về $ (tài liệu) .ready () ...) – jbl