11

Tôi đang sử dụng trình duyệt IE có điều kiện bình luận sau:IE Comments Conditional và Chrome/Firefox

<!--[if gt IE 7]> 
Here is some code. 
<![endif]--> 

này hoạt động tuyệt vời để giữ cho các mã từ render trong bất kỳ trình duyệt IE thấp hơn 8.
Tuy nhiên, điều này cũng giữ mã hiển thị trong Chrome và Firefox.

Bất kỳ ý tưởng nào về lý do điều này xảy ra và cách tôi có thể lấy mã để hiển thị trong các trình duyệt khác ngoài IE?

Trả lời

42

Nhận xét có điều kiện là quy tắc dành riêng cho IE của Microsoft và chúng không phải là một phần của bất kỳ tiêu chuẩn nào. Nếu bạn kiểm tra cấu trúc của một bình luận có điều kiện:

<!--[if gt IE 7]> 
Here is some code. 
<![endif]--> 

Như tên gọi của nó sẽ bao hàm, đó là tất cả chỉ là một bình luận lớn <!-- comment -->. IE kiểm tra các ý kiến ​​cho các điều kiện như vậy, một lần nữa, không tuân thủ các tiêu chuẩn HTML.

Để tạo mã mà không render trong IE, nhưng render trong các trình duyệt khác, bạn sử dụng sau đây có điều kiện:

<!--[if !IE]> --> 
This will be rendered by anything but IE. 
<!-- <![endif]--> 

Xem như thế nào các điều kiện được kèm theo trong bình kín? Đó là lý do tại sao được hiển thị trong các trình duyệt thông thường, trong khi IE kiểm tra điều kiện và quyết định bỏ qua mọi thứ cho đến khi endif.

EDIT

Nếu bạn muốn thêm điều kiện khác, và giữ render mã trên trình duyệt không phải IE, bạn có thể sử dụng workaround sau:

<!--[if gt IE 7]> <!-- --> 
Here is some code for anything but IE 7 and below. 
<!-- <![endif]--> 

Lưu ý tôi đã phải sử dụng mở các bình luận một lần nữa để ngăn chặn IE hiển thị --> trước mã. Các trình duyệt khác sẽ vẫn coi đó là một phần của nhận xét.

+0

Tôi muốn mã hiển thị cho IE 8 và IE 9 không có phiên bản IE trước đó. Tôi cũng muốn mã hiển thị trong Chrome và Firefox. – Baxter

+1

Miễn là bạn đóng các ý kiến, tôi đoán nó nên làm cho bất kỳ điều kiện. – zebasz

+1

Tôi đã thử nghiệm nó, không hoàn toàn hoạt động. Tôi đã tìm được cách giải quyết, vì vậy tôi sẽ chỉnh sửa và thêm nó. – zebasz