2012-01-02 25 views
6

Nó xuất hiện từ bảng điều khiển mạng, khi bạn tải tập lệnh thông qua Modernizr.load, nó không thực sự chặn $ (tài liệu) .ready(). Vì vậy về mặt lý thuyết, giả sử tôi thêm json2.js qua Modernizr, và một nhà phát triển khác cố gắng sử dụng JSON.parse trong $ (document) .ready(), kịch bản của họ thực sự có thể bị phá vỡ do điều kiện chủng tộc.

Có thể khắc phục điều này mà không thử cảnh sát tất cả các lần đăng ký mã không?

Trả lời

4

Tôi sẽ thấy theo cách này: Sử dụng Modernizr (và kiểm tra trình duyệt) để tải tệp Javascript là quyết định thiết kế rất chung mọi người trong nhóm của bạn cần phải biết trong mọi trường hợp.

Tuy nhiên, bạn có thể muốn triển khai (nếu bạn chưa có) một số loại khởi tạo ứng dụng của bạn, đây sẽ là điều cuối cùng cần chạy - sau khi mọi thứ đã được tải. Khởi tạo này sau đó có thể được thực hiện trong một cuộc gọi lại yepnope, rõ ràng ngay cả trong một wrapper $(document).ready().

Yepnope bang trong bối cảnh này trong "vấn đề thường":

Chỉ vì kịch bản của bạn được thực hiện, không có nghĩa là tài liệu đã sẵn sàng. Đừng quên rằng bạn có thể sử dụng gọi lại tài liệu sẵn sàng bên trong gọi lại yepnope của bạn. Nếu bạn đang chơi với DOM, chúng tôi rất muốn khuyến khích bạn làm như vậy, vì môi trường thử nghiệm của bạn có thể hành động khác với máy chủ sản xuất của bạn tốc độ đáng kể là khác nhau.


Và vì lợi ích của sự hoàn chỉnh:

Nếu không kiểm tra chúng thêm nữa, đây là một vài ý tưởng khác về cách đối phó với document.ready + Modernizr.load: How can I use yepnope.js with $(document).ready() effectively?https://stackoverflow.com/a/6767886/564721

+0

Chúng tôi đã kết thúc sử dụng Modernizr.load() cho miếng dán hoàn toàn thẩm mỹ. Đó là quá đau đớn để sử dụng cho các tính năng chức năng. – voidvector

Các vấn đề liên quan