2009-01-25 30 views
46

Cập nhật: Lỗi này đã được xác nhận bởi ít nhất hai lỗi khác. Ngay cả khi bạn không đọc bài đăng đầy đủ của tôi - nếu bạn đang đọc và sử dụng JQuery 1.3.1 thì ngừng sử dụng nó nếu bạn đang dựa vào bất kỳ trình xử lý nào bạn muốn thực thi khi DOM hoàn tất nhưng trước hình ảnh của trang đã tải.JQuery đang chờ tải hình ảnh trước khi thực hiện tài liệu.ready

Update2: Cảm ơn Tom (id người dùng 20!) Để đăng link to the ticket trên trình theo dõi lỗi jQuery.

Update3 - 2009/01/28: Sự cố đã được giải quyết đúng cách (đối với những người hoàn nguyên về 1.2.6 không phải là một tùy chọn). Đối với bất kỳ ai hiện đang sử dụng 1.3.1 và cần khắc phục ngay lập tức, bạn có thể đọc câu trả lời được chấp nhận bên dưới để biết hướng dẫn. Cảm ơn John.


Tôi chỉ nâng cấp lên JQuery 1.3.1, và nó đã cho tôi vài giờ để nhận ra rằng yêu

$(function() { ... } 

cú pháp của tôi bây giờ đang đợi cho toàn bộ trang để tải (bao gồm cả hình ảnh) trước khi thực hiện thân hàm. Tôi đã nhìn thấy strange behavior khi cố gắng tích hợp các menu của Yahoo. (May mắn thay tôi đã có một số hình ảnh tải chậm trên trang của tôi mà làm cho tôi nhận thức được vấn đề)!

Tôi đã thực hiện một tệp thử nghiệm vì tôi đã tìm ra điều gì đó phức tạp hơn đang diễn ra, nhưng tôi vẫn có các triệu chứng tương tự ngay cả với tệp đơn giản này.

phiên bản
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> 
    <script> 
    $(function() {  
     alert("Ready"); 
    }); 
    </script> 
</head> 

<body>  
    <img src="<PATH_TO_DYNAMIC_IMAGE>_1.jpg" /> 
    <img src="<PATH_TO_DYNAMIC_IMAGE>_2.jpg" /> 
    <img src="<PATH_TO_DYNAMIC_IMAGE>_3.jpg" /> 
    <img src="<PATH_TO_DYNAMIC_IMAGE>_4.jpg" />  
</body> 

khác nhau của JQuery có kết quả khác nhau:

  • gì sẽ xảy ra trong phiên bản 1.2.6 là hộp cảnh báo được hiển thị ngay lập tức và sau đó tôi nhìn thấy những hình ảnh tải đằng sau nó (dự kiến ​​và ghi nhận hành vi) .
  • Điều gì xảy ra trong phiên bản 1.3.1 là tất cả ảnh đều tải và chỉ khi đó hộp cảnh báo sẽ hiển thị.

Điều gì đang diễn ra! Đây có phải là một tính năng mới (tôi không thể tưởng tượng tại sao) hoặc một lỗi?

Chú ý: Điều này chỉ có vẻ là một vấn đề trong IE và không firefox

Xin lỗi tôi không có một tập tin hình ảnh sống động đó là truy cập công khai để làm cho nó dễ dàng hơn cho những người khác để thấy điều này. Nếu bạn muốn thử nghiệm nó ra tôi đề nghị sử dụng một tập tin hình ảnh lớn chọn ngẫu nhiên từ hình ảnh google và xóa bộ nhớ cache của bạn.

+0

Tôi đang gặp sự cố tương tự EXACT với phiên bản mới nhất của jQuery. Vui lòng giữ câu hỏi này được cập nhật dựa trên bất kỳ phản hồi nào bạn nhận được. – Tom

+0

@tom chắc chắn sẽ. tôi gửi email và twitter john resig ban đầu đã viết JQuery. cá nhân tôi không vội vàng cho một bugfix (tôi trở lại 1.2.6) nhưng họ thực sự cần phải đưa phiên bản xuống như phiên bản phát hành trên jquery.com! –

+0

@Simon - Tôi đã gửi một tấm vé chiều nay về vấn đề này. Ah, những niềm vui của phần mềm tự do;) Họ sẽ làm cho nó được sửa chữa đủ sớm, tôi chắc chắn - các nhà phát triển giỏi trong nhóm - nhưng nó hút tôi vì tôi không thể quay trở lại 1.2.6 = T – Tom

Trả lời

57

này là do lỗi jQuery # 2614 và # 3880 - có những vấn đề nhất định với mã sẵn sàng trong IE trong 1.2.6 và 1.3 - và bây giờ là một . bộ khác nhau của vấn đề trong 1.3.1

Một cuộc thảo luận lớn hơn có thể được tìm thấy ở đây:
http://groups.google.com/group/jquery-dev/browse_thread/thread/3abf45d3fd4d50fc

Và vé liên quan đến vấn đề này có thể được tìm thấy ở đây (nếu bạn tìm thấy vấn đề khác với việc sửa chữa, pl Dễ tái mở vé và gửi đến các chủ đề jquery-dev trên):
http://dev.jquery.com/ticket/3988

tôi vừa hạ cánh một sửa chữa cho điều này trong SVN rev 6170.

tôi chỉ đẩy lên một đêm mới mà bạn có thể sử dụng cho đến 1.3.2 chính thức đi ra:
http://code.jquery.com/nightlies/jquery-2009-01-28.js

Xin lỗi trong sự chậm trễ cho việc sửa chữa ra - đã được đi du lịch trong tuần này.

+15

awesome - Resig để giải cứu :) –

+1

Radical! Bạn đá John! –

+0

Cảm ơn rất nhiều, John. Điều này thật tuyệt. – Tom

4

Có một số thứ không thể kiểm tra được đơn vị. Chỉ cần xác nhận trong IE6 + 7 và 1.3.1. Địa ngục thánh, thật là một sự hồi quy lớn.

Vì vậy, bạn có thời gian để báo cáo điều này không? Chỉ cần kiểm tra và nó không phải là một lỗi đã biết cho 1.3.1.

+0

nếu bạn đã biết nơi để kiểm tra và bạn có thể báo cáo điều đó sẽ tuyệt vời. 4:50 sáng cho tôi và tôi sắp đi ngủ! điều buồn cười là tôi đang mã hóa một trang web hoàn toàn mới và điều duy nhất tôi đã sử dụng JQuery cho đến nay là nhiệm vụ cơ bản này! –

+0

oh và cảm ơn vì đã làm hài lòng tôi và tin vào điều không thể tin được :) –

4

Here's an update of the ticket I submitted. Dường như @Webdawson đã đính kèm một trang mẫu vào vé.

+0

@tom - tuyệt vời! thats lỗi của tôi! tôi yêu hình ảnh 3MB khổng lồ mà họ đã sử dụng! tuyệt vời. cảm ơn vì đã cho phép tôi thuê ngoài báo cáo lỗi của mình thông qua bạn. những ngày làm việc đó đã kết thúc - một khi bạn bắt đầu, bạn không thể dừng lại. tôi đã giải tán khi MS luôn đóng các lỗi của tôi hoặc nói không sửa chữa (ngoại trừ lỗi máy chủ SQL!) –

3

vâng tôi đã thêm ví dụ, rõ ràng là lỗi trong IE6 & 7 (tôi không thử nghiệm nó trong các phiên bản IE khác). Có vẻ như phiên bản 1.3.1 có rất nhiều lỗi. :(

Dưới đây là liên kết ví dụ: http://www.kollermedia.at/jquery_bug.html

+0

Tôi đã nghĩ đây là loại showstopper có nghĩa là họ sẽ gỡ xuống 1.3.1 từ trang web của họ (ít nhất là là bản phát hành hiện tại). sẽ treo rất nhiều trang web cho mọi người hoặc khiến họ rất không phản hồi. ồ. –

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