2009-04-14 21 views
9

Gần đây tôi đã cài đặt IE 8 và dường như không thể nhận được sự kiện jquery $ (tài liệu) .ready để kích hoạt. Có những cân nhắc đặc biệt nào mà tôi đang thiếu không? Litterally, đây là tất cả những gì có trong html của tôi và nó hoạt động như mong đợi trong Chrome và Firefox:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page full of awesomeness</title> 
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" /> 
    <script type="text/javascript">   
     $(document).ready(function() { 
      alert("Hello?");   
     }); 
    </script> 
</head> 

<body> 

</body> 

Trong Internet Explorer, trang chỉ tải mà không cần sự cố. Không có hộp cảnh báo và tôi không thể thấy bất kỳ lỗi javascript nào được báo cáo. Đây có phải là điều bình thường mà tôi không biết?

+2

Kiểm tra trình xác thực w3c và bạn sẽ thấy – Paco

Trả lời

32

Hãy thử cách này.

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js" /> 

Into này

<script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script> 
+3

Đúng. IE không gặp khó khăn về các thẻ script tự đóng. xem: http://webbugtrack.blogspot.com/2007/08/bug-153-self-closing-script-tag-issues.html – scunliffe

+4

Nó hầu như không thất bại nếu nó được chỉ định để hoạt động theo cách như vậy .. chỉ vì bạn nhận được kết quả làm sai nó không có nghĩa là bạn nên sử dụng nó. – meandmycode

+0

Điều đó hoàn toàn làm được. Cảm ơn. Có lẽ tôi sẽ không bao giờ nghĩ ra điều đó. – MojoFilter

0

Tôi đoán sẽ là này (xin lỗi tôi không có IE8 trên máy tính này để kiểm tra)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page full of awesomeness</title> 
    <script type="text/javascript" src="~/Scripts/jquery-1.3.2.js"></script> 
    <script type="text/javascript">   
     $(document).ready(function() { 
      alert("Hello?");   
     }); 
    </script> 
</head> 

<body> 

</body> 

Ngoài ra tôi muốn đề nghị sử dụng /Scripts/jquery-1.3.2.js nếu bạn đang đề cập đến gốc của trang web của mình

+0

Tôi sẽ không. Nếu bạn sử dụng /Script/jquery-1.3.2.js thì trang web của bạn sẽ không hoạt động trên web ảo. – cdmckay

+1

Vâng, không có lý do gì để xóa ~, việc xóa nó sẽ chỉ làm cho ứng dụng của bạn trở nên giòn hơn. – meandmycode

+0

Vâng, đó chỉ là ý kiến ​​của tôi. Trong quá khứ, tôi đã có một số vấn đề với việc liên kết các thư viện trong các trang web có sử dụng "url của con người", vì vậy tôi muốn liên kết chúng với "/" (tất nhiên nếu chúng nằm trong miền gốc của trang) – Alekc

1

Với các tiêu chuẩn nghiêm ngặt XHTML hiện tại:

Ngay cả khi src được chỉ định, thẻ tập lệnh không phải là một thẻ trống và không thể được viết <script src=".... />. Nếu bạn bao gồm src, bạn không nên bao gồm bất kỳ tập lệnh nào giữa thẻ mở và đóng khi trình duyệt xử lý bất kỳ tập lệnh nào giữa các thẻ không đáng tin cậy.

Về cơ bản, không tự đóng thẻ. Sử dụng </script>.

+0

Từ đặc tả XML, những ký hiệu này cũng tương đương nhau. Đó là một lỗi trong IE. – rds

+2

Nó không phải là một lỗi trong IE. Dự kiến ​​một tài liệu được phân phát dưới dạng 'text/html' để được coi là XML. XHTML được phân phối dưới dạng 'text/html' là một hack và bạn phải tuân thủ nguyên tắc tương thích: http://www.w3.org/TR/xhtml-media-types/#C_1 – Quentin

0

Ngoài những gì người khác đã nói, bạn cũng thiếu số </html> ở cuối tài liệu. Có thể chỉ là lỗi sao chép/dán :)

0

Đồng thời kiểm tra tính tương thích của jQuery. Hiện tại jQuery 2.x chỉ hỗ trợ IE9 trở lên. Không phải IE8

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