2012-02-20 34 views
9

Tôi có các tệp javascript bên ngoài được tải trong trang cái của tôi.Tại sao Javascript đôi khi không tải trong IE8

Đôi khi trong IE8 tệp javascript của tôi không được tải lên một cách chính xác và trình duyệt ném một loạt các lỗi nói rằng đối tượng không được công nhận.

Nếu tôi làm mới trang thì mọi thứ đều ổn. Nếu tôi nhấp vào một liên kết thì vấn đề đôi khi lại xảy ra.

Tôi có thẻ meta trong tiêu đề của mình để xóa bộ nhớ cache trên mỗi yêu cầu.

Ngoài ra tôi đang sử dụng head.load để tải các tệp js của mình song song.

Tập lệnh head.load nằm trong tiêu đề của tôi và sau đó tệp bên ngoài nằm ở cuối phần thân của tôi.

Hãy nhớ rằng sự cố này chỉ xảy ra trong IE8. Vì vậy, câu hỏi của tôi là .. có một hack mà tôi có thể sử dụng để đảm bảo các tập tin javascript của tôi được nạp một cách chính xác mỗi khi tải trang cho IE8?

Mọi trợ giúp sẽ được đánh giá cao.

Cập nhật theo yêu cầu

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 

    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
    head.js("scripts/js/jquery-1.6.2.min.js"); 
     head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
</body> 
+0

Có thể cần báo giá mã 'head.load' của bạn. –

+0

'ném một loạt các lỗi nói rằng đối tượng không được công nhận' cụ thể sẽ giúp đỡ. – Shad

+0

@damaniel, bạn nói mã này chỉ bị lỗi trong IE8. Các trình duyệt khác mà bạn đã thử nghiệm trên đó là gì? Bạn đã thử một IE8 trên một máy khác? Bạn có thể tái tạo vấn đề ở chế độ an toàn (tùy chọn dòng lệnh '-extoff') không? –

Trả lời

2

Ok những vấn đề dường như là cách các tập tin head.load tải externals tôi trong IE8. Nếu tôi tải jquery trước khi tôi tải tập tin head.load của tôi và sau đó tải externals của tôi song song ở cuối trang, sau đó của họ không có lỗi trên trang.

Điều này chắc chắn là một giải pháp nhưng tôi muốn rằng ngay cả jquery có thể được nạp vào đầu mà không có lỗi javascript trong IE. Tôi chắc chắn đây sẽ không phải là lỗi trong các phiên bản sau.

Cảm ơn tất cả mọi người vì mục nhập.

@ frederic - Tôi làm việc tại một công ty có 188.000 nhân viên. Nếu họ có một add trên cài đặt trong trình duyệt của họ đó là gây ra trang của tôi sụp đổ sau đó không có gì tôi có thể làm về điều đó. Tôi cũng không nghĩ rằng vấn đề này đang được gây ra bởi bất kỳ tiện ích bổ sung. Tôi nghĩ cách head.load của nó được xử lý trong IE8.

@Shard - Tôi không nghĩ rằng bạn hiểu những gì tôi đã hỏi và nếu đó là trường hợp thì tôi xin lỗi vì không rõ ràng hơn. Dù sao tôi đã tìm thấy một giải pháp để cảm ơn bạn cho đầu vào của bạn.

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 
    <script type="text/javascript" src="scripts/js/jquery.min.js"></script> 
    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 

<script type="text/javascript"> 
    head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
+1

Xin chào, tôi không muốn thô lỗ nhưng câu trả lời của bạn có thể giúp giải quyết vấn đề cụ thể của bạn nhưng thực sự không giải quyết được vấn đề chung về deps với headjs, hãy xem xét câu trả lời của tôi và có thể đưa ra nhận xét về bạn. –

0

Nhìn vào trang http://headjs.com/ trong phần Cách sử dụng bạn sẽ thấy chính xác những gì là sai với mã của bạn:

// file được nạp song song và thực hiện theo thứ tự họ đến head.js (" file1.js "); head.js ("file2.js"); head.js ("file3.js");

kịch bản của bạn đang được tải song song và được thực hiện trong thời gian đến, đó là khá xấu cho DEPS trên jquery, nếu bạn muốn họ được thực hiện theo thứ tự sử dụng này:

head.js("scripts/js/jquery-1.6.2.min.js", 
     "scripts/js/jquery.cookie.js", 
     "lib/gritter/jquery.gritter.min.js"), 
     "lib/fancybox/jquery.easing-1.3.pack.js", 
     "lib/fancybox/jquery.fancybox-1.3.4.pack.js", 
     "scripts/js/jquery.microaccordion.js", 
     "scripts/js/jquery.stickyPanel.js", 
     "scripts/js/guidely.js", 
     "scripts/js/pto.js"); 

Bạn cần phải gọi js với một danh sách các nguồn lực để tải, không chỉ gọi js nhiều lần.

+0

Tài liệu bạn nói không có sẵn một năm trước đây khi tôi thực sự gặp sự cố này và tôi chắc chắn rằng việc tải các tệp bên ngoài được phân tách bằng dấu phẩy không phải là tính năng của headj ... hoặc nó khá thú vị mà bạn có thể làm điều đó bây giờ ... cảm ơn cho đầu vào – damaniel

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