2010-09-10 29 views

Trả lời

12

Bạn có thể làm điều đó với conditional comments của IE, như vậy:

<![if !IE]> 
<script src="your-non-IE-script.js" type="text/javascript"></script> 
<![endif]> 

Lưu ý rằng ở trên được xử lý bởi trình duyệt không phải IE vì có điều kiện là không một nhận xét HTML , nhưng một hướng dẫn chế biến, do đó, bit ở giữa được xử lý bởi các trình duyệt không phải IE. IE thấy điều kiện và bỏ qua nội dung vì nó hiểu các phương tiện có điều kiện "Không phải bạn, di chuyển cùng."

Nếu bạn muốn làm một cái gì đó chỉ cho IE, bạn sử dụng một hình thức đó là tương tự, nhưng sử dụng HTML ý kiến ​​thay vì (với --) bởi vì đó là cách duy nhất bạn có thể dựa vào các trình duyệt khác bỏ qua các nội dung. IE biết phải chú ý đến họ, mặc dù họ đang bình luận. Thông tin thêm về liên kết ở trên.

Lưu ý rằng có một ý nghĩa trang tốc độ tải trên IE (không phải là trình duyệt khác) khi bạn sử dụng ý kiến ​​có điều kiện (họ tạm thời chặn tải về các nguồn lực khác), thêm ở đây: http://www.phpied.com/conditional-comments-block-downloads/


Update 2013 : IE10 + không hỗ trợ nhận xét có điều kiện nữa.

+4

Tôi chỉ muốn lưu ý rằng đó không phải là hướng dẫn xử lý. Nó chỉ là cú pháp Microsoft độc quyền. Lệnh xử lý ở dạng dữ liệu ''. –

+0

@Eli: Chắc chắn rồi (http://en.wikipedia.org/wiki/Processing_Instruction). Wow, tôi luôn nghĩ rằng họ đang xử lý hướng dẫn. Cảm ơn! –

1

Bạn có thể làm điều đó một cách hoàn toàn khác [chèn thứ gì đó CHỈ nếu IE] sử dụng Nhận xét có điều kiện, có thể điều đó sẽ giúp bạn.

http://en.wikipedia.org/wiki/Conditional_comment

+1

Bạn cũng có thể chèn một cái gì đó chỉ khi nó * không * IE, bằng cách sử dụng bình luận có điều kiện của IE. Vâng thật đấy. –

+0

Điều cần biết - cảm ơn! –

3

Bạn có thể sử dụng một IE conditional comment.

Để có được cái gì đó sẽ hiển thị trong các trình duyệt khác ngoài IE, nhưng không phải trong IE, và đó vẫn sẽ xác nhận, bạn có thể sử dụng:

<!--[if !IE]>--> 
    <script src="..."></script> 
<!--<![endif]--> 
0

Làm thế nào về chuyển nó xung quanh? Nếu đây là khả năng bạn có thể sử dụng nhận xét có điều kiện của IE: http://www.quirksmode.org/css/condcom.html

Nếu không, bạn có thể đánh lừa tác nhân người dùng nhưng điều này được coi là 'thực hành không tốt'.

+0

Bạn không cần phải xoay vòng, các bình luận có điều kiện của IE có thể được sử dụng để nhắm mục tiêu các trình duyệt không phải IE (có, thực sự). –

3

Đầu tiên, lưu ý: Đây không thực sự là một thực hành tốt. Nếu có thể, bạn nên cố gắng thiết kế trang web của mình theo cách không thuyết phục trên trình duyệt để nó hoạt động nhất quán trên tất cả các trình duyệt mà không cần phải duy trì các mẹo và thủ thuật cho các sự cố dành riêng cho trình duyệt.

Nhưng nếu bạn thực sự muốn làm điều này, đó là dễ dàng nhất để bao gồm một tập tin duy nhất nếu trình duyệt IE: (. Bao gồm các tập tin chỉ khi trình duyệt IE6 hoặc ít hơn)

<!--[if lt IE 7]> 
<script type="text/javascript" src="global.js"></script> 
<![endif]--> 

Tuy nhiên, nếu bạn thực sự muốn làm điều đó theo cách khác xung quanh, đây là một số lựa chọn của bạn:

  1. Sử dụng trình duyệt server-side sniffing để xử lý các trình duyệt trước khi trang được vẽ.Tức là, sử dụng ngôn ngữ phía máy chủ (Java, PHP, bất kỳ thứ gì) để xác định trình duyệt (thường là thông qua chuỗi tác nhân người dùng) và sau đó có điều kiện bao gồm các tệp JS của bạn theo cách đó. (Ví dụ: bạn có thể sử dụng chức năng get_browser của PHP.)
  2. Sử dụng trình duyệt phía máy khách để đánh vần để gọi một tệp JS khác nếu trình duyệt không phải là IE. Bạn có thể xác định trình duyệt bằng cách sử dụng JavaScript, sau đó chèn một tệp JS khác vào trang nếu trình duyệt là bất kỳ thứ gì ngoài IE. (Ví dụ: bạn có thể sử dụng chức năng browser của jQuery.)
  3. T.J.'s answer cũng cung cấp cách thực hiện nó với các nhận xét có điều kiện của I.E.
1

Vâng, kịch bản có điều kiện cho IE là câu trả lời của bạn:

<!--[if lt IE 7 ]> 
    <script src="/js/my_ie_script.js"></script> 
<![endif]--> 
+0

Điều đó sẽ làm trái ngược với những gì OP yêu cầu. –

+0

Dang, bạn đã đúng. Làm thế nào tôi đã bỏ lỡ 'không' trong câu hỏi của OP. Muộn rồi! – mkoistinen

2

Nó ít được biết đến hơn là nhận xét có điều kiện, nhưng tôi nghĩ rằng tôi muốn đề cập rằng bạn cũng có thể sử dụng tính năng IE gọi là có điều kiện biên soạn - xem http://msdn.microsoft.com/en-us/library/7kx09ct1%28VS.80%29.aspx

dụ này xuất phát từ tài liệu của họ:

/*@cc_on @*/ 
/*@if (@_jscript_version >= 5) 
document.write("JScript Version 5.0 or better.<BR>"); 
@else @*/ 
document.write("You need a more recent script engine.<BR>"); 
/*@end @*/ 
Các vấn đề liên quan