2008-10-03 21 views
17

Khi IE8 được phát hành, mã sau có hoạt động để thêm biểu định kiểu có điều kiện không?Nhắm mục tiêu IE8 với các nhận xét có điều kiện có hoạt động không?

<!--[if IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie-8.0.css" /> 
<![endif]--> 

Tôi đã đọc báo cáo xung đột về việc liệu điều này có hoạt động với bản beta hay không. Tôi hy vọng ai đó có thể chia sẻ kinh nghiệm của họ. Cảm ơn.

+2

Tuyệt vời. Tuy nhiên, một phần mở rộng không chuẩn từ Microsoft. –

+9

Cái này rất cũ và vô cùng hữu ích vì nó cho phép các thiết bị chuyển mạch CSS không hack phục vụ các bảng định kiểu khác nhau cho MSIE. –

+0

Câu hỏi này nên được đóng một thời gian dài trước đây. –

Trả lời

14

Nó làm việc cho tôi - cả ở chế độ quirks và ở chế độ tuân thủ tiêu chuẩn. Tuy nhiên, nó không hoạt động khi chuyển sang chế độ tương thích IE8.

+1

Ý của bạn là chế độ tương thích IE7? – Devon

+1

Không: Beta 2 có chế độ trình duyệt và chế độ tài liệu. Chế độ tài liệu cho phép tương thích với IE 7 (cũng như chế độ nghiêm ngặt và chế độ quirks). Chế độ trình duyệt có các tùy chọn “IE 7”, “IE 8” và “Chế độ tương thích IE 8”. Đó là điều tôi muốn nói. –

21

Một điều cần lưu ý:

Nó không làm việc, NHƯNG nếu bạn đang tải trang/trang web mạng nội bộ (ví dụ Intranet) nó sẽ được tải trong IE7 chế độ theo mặc định! (cập nhật - localhost [*] là một trường hợp đặc biệt, đó không render trong chế độ tiêu chuẩn)

này đi ngược lại tuyên bố ban đầu của MSFT đi TIÊU CHUẨN theo mặc định.

ví dụ:

http://127.0.0.1/mysite/mypage.php <-- IE8 by default (updated!) 
http://localhost/mysite/mypage.php <-- IE8 by default (updated!) 
http://machinename/mysite/mypage.php <-- IE7 by default 
http://192.168.100.x/mysite/mypage.php <-- IE7 by default 
http://google.com/ <-- IE8 by default 

[*] - Scott Dickens [MSFT] ghi nhận trong một chú thích here on the IE Blog rằng localhost là một kịch bản đặc biệt trong Intranet (thường được sử dụng để phát triển các trang web Internet) do đó sẽ làm cho trong chế độ tiêu chuẩn theo mặc định.

Để kiểm tra chế độ gì một trang trong IE8 được thực sự render nhập, bạn có thể sử dụng kiểm tra các công cụ nhà phát triển hoặc sử dụng mã bookmarklet này (chỉ hoạt động trong IE8):

javascript: 
var vMode=document.documentMode; 
var rMode='IE5 Quirks Mode'; 
if(vMode==8){ 
    rMode='IE8 Standards Mode'; 
} else if(vMode==7){ 
    rMode='IE7 Strict Mode'; 
} 
alert('Rendering in: '+rMode); 
+0

Tôi nghĩ rằng phụ thuộc vào loại tài liệu (không chắc chắn, chưa thử nghiệm): Cách tôi hiểu Microsoft, chế độ nghiêm ngặt của IE 8 được kích hoạt ngay khi * bất kỳ * tài liệu HTML hợp lệ nào được chỉ định. –

+0

Không, không chính xác. IE8 trên mạng cục bộ sẽ hiển thị trong cả IE5 (chế độ quirks) hoặc IE7 (chế độ tiêu chuẩn) nếu bạn có một loại tài liệu được chỉ định. Để xem trang web cục bộ được hiển thị ở chế độ TRUE IE8 STANDARDS, bạn phải nói rõ ràng với IE rằng bạn muốn nó (ví dụ: người dùng phải chọn điều này) – scunliffe

+0

Ok thú vị - làm sao bạn biết điều này? Bạn có thể cung cấp một số bằng chứng? Khi tôi đi vào các công cụ phát triển trong IE8 nó báo cáo nó đang chạy chế độ IE8 cho cả chế độ hiển thị và trình duyệt khi tải các trang địa phương (ví dụ: localhost/somepage.html) – Konrad

3

Tools/tương thích các thiết lập xem

bỏ chọn tất cả

0

Cảm ơn sự giúp đỡ của bạn. Tôi đã phát hiện ra giải pháp, dường như vấn đề là có mỗi tờ định kiểu sử dụng thuộc tính tiêu đề của riêng nó. Một khi tôi đã lấy danh hiệu ra khỏi tất cả nhưng tấm phong cách chính, không có prob.

Đây là một vấn đề lạ đối với IE8 - và mặc dù tôi đã được bảo rằng nó hoạt động theo cách đó, một việc cần làm với "Tùy chọn biểu định kiểu" - nó chỉ phục vụ để tạo sự cố vì giải pháp yêu cầu bạn xóa tiêu đề điều này có thể hữu ích khi viết kịch bản, v.v. - khi bạn cần gọi cho biểu định kiểu.

Trong mọi trường hợp, không chắc đây có phải là lỗi hay không, nhưng tôi hy vọng Microsoft sẽ nghiên cứu thêm.

Cảm ơn

+0

Tôi nghĩ bạn không nên thêm các tiêu đề giống hệt nhau vào các biểu định kiểu được liên kết khác nhau. AFAIR không hoạt động tốt trong Konqueror (năm trước). – hurikhan77

0

Tại sao thậm chí bận tâm viết biểu định kiểu riêng cho IE8?

Nếu bạn đã gỡ lỗi cho IE7, bạn có thể buộc IE8 vào chế độ tương thích, và do đó hiển thị mã của bạn như thể IE8 là IE7.

Tất cả những gì bạn phải làm là đặt RIGHT này DƯỚI ĐÂY. Bất cứ nơi nào khác và nó sẽ không hoạt động.

Và sau đó chỉ mất nửa giờ để làm việc trung bình cho mỗi dự án, không cần gỡ lỗi mãnh liệt cho IE8!

Thậm chí Msn.com thực hiện điều này - loại mỉa mai, eh?

Đã viết một bài blog về nó thời gian gần đây: http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get-ie8-to-behave-like-ie7/

+0

Điều gì xảy ra khi IE9 xuất hiện? – codeinthehole

0

IE8 render khá đẹp so với IE7, tôi có stylesheets cho IE6, IE7 và IE8; lúc đầu tôi nghĩ rằng các bình luận có điều kiện không hoạt động cho IE8 sau một chút thử nghiệm, tôi đã tìm thấy một số quy tắc không được áp dụng bởi IE8 chỉ vì tôi cần phải đặt tổ tiên hoặc lớp cha trước, ví dụ: tôi đã có một lớp như

.niceclass {some:properties;more:properties;}

nó làm việc chỉ nếu tôi thay đổi nó cho một cái gì đó như:

.parentclass .niceclass {some:properties;more:properties;}hay

#parentselector .niceclass {some:properties;more:properties;}

btw trong IE8- của tôi chỉ css tôi chỉ có một quy tắc ghi đè, phần còn lại được hiển thị ost như firefox, mặc dù thats không làm cho tôi rời FF anyway.

0

Về phần mình, tôi muốn sử dụng đường viền tròn bằng css. IE8 trên Vista không hỗ trợ như vậy. Và kể từ khi đồ họa được như vậy mà các biên giới tròn sẽ hiển thị một bóng tròn đẹp là tốt, trang trông khủng khiếp trong IE8.

Tôi đã thử sử dụng các nhận xét có điều kiện, nhưng vô ích, IE8 sẽ không đánh giá biểu thức IE và do đó sẽ không bao gồm biểu định kiểu bên ngoài.

Sau đó, tôi đã xem xét việc đưa nó vào chế độ đồng bộ/tương thích, tuy nhiên, điều này vẫn không hoạt động như CSS hacks tôi đã sử dụng đã không còn hoạt động cho IE8 nữa.

Cuối cùng nhưng ít nhất tôi đã tìm thấy một bản hack CSS hoạt động sẽ làm cho trang chính xác khi ở chế độ tương thích.

* + html #test[id] { color:lime } 

Bây giờ, tôi không biết nếu điều này làm việc cho IE7 hoặc thấp hơn, do đó bạn sẽ có ít nhất ba hacks khác nhau cho mỗi IE phát hành bạn muốn hỗ trợ, e.e.

* + html #test, 
    html+body #test, 
    * html body #test 
    { color:lime } 

Tôi tự hỏi hồi quy tiếp theo của Người khai thác Internet sẽ là gì đối với chúng tôi.

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