2009-08-07 8 views
5

IE8 có chạy ở chế độ quirks như IE6/7 không?Chế độ IE8 và quirks

Tôi có một trang web có một số mã kỳ lạ thực sự. Nội dung được căn giữa với phần đệm và lề âm.

Nó hoạt động chính xác trong IE6/7 và các trình duyệt khác nhưng trong IE8 khu vực nội dung bằng một nửa rộng và không ở giữa (cờ cho chế độ quirks).

Mã nguồn có ba dòng trống trước DOCTYPE. Tôi biết rằng sẽ ném IE6 vào chế độ quirks. Nó cũng sẽ ảnh hưởng đến IE8?

Tôi không có quyền truy cập vào nguồn nên tôi không thể xóa các dòng đó để kiểm tra.

+0

Lưu trong máy tính của bạn và chỉnh sửa nguồn. Xem liệu việc tách các dòng trống đó có hoạt động hay không. Chế độ quirks nên tránh như bệnh dịch hạch. – voyager

+1

Khi bạn đang ở trang bạn không chắc chắn, chỉ cần dán thông tin sau vào cửa sổ trình duyệt- javascript: alert (document.compatMode); và điều đó sẽ cho bạn biết chế độ hiện tại. – Steerpike

+0

s/cửa sổ trình duyệt/thanh địa chỉ broswer – Steerpike

Trả lời

5

Chạy một vài bài kiểm tra nhanh chóng có thể tìm thấy here dường như chỉ ra rằng dòng trống không nên ném IE8 vào Quirks chế độ (đó là khác với Chế độ tương thích mà mọi người có vẻ khó hiểu với nó).

Tôi đã viết chi tiết về mức độ nhầm lẫn của các chế độ khác nhau của IE8/7 here và tôi thậm chí không bao gồm Chế độ Quirks trong bảng phân tích. Bạn có thể tìm thấy mô tả chi tiết về chế độ Quirks here (không phải cho câu hỏi ban đầu, nhưng những người khác có thể thấy nó thú vị.)

+2

Ah ... loại tài liệu của họ là Theo biểu đồ của bạn, điều đó sẽ đẩy IE8 vào chế độ quirks. – Emily

+0

Cảnh báo: Liên kết # 2 (các chế độ khác nhau cực kỳ khó hiểu của IE8/7) không còn hợp lệ. –

0

Có. Chế độ quirks của Internet Explorer là IE5.5. IE6/7/8 chuyển trở lại 5.5 khi có chế độ quirks. Vì vậy, vì nó đã làm việc tốt trong IE6/7 nó không phải là chế độ quirks. Có một nút "Chế độ xem tương thích" trong IE8 để giải quyết vấn đề này. Nó không phải là một giải pháp tốt cho tôi mặc dù. Bạn sẽ phải kiểm tra mã CSS của mình.

+0

Nhưng không nên IE6/7 được trong chế độ quirks quá kể từ khi dòng trống trước DOCTYPE? Có vẻ tốt trong chế độ tương thích. Nó được phát triển trong IE6 và tôi nghĩ họ bằng cách nào đó đã bù đắp cho chế độ quirks mà bây giờ đang ném IE8 cho một vòng lặp vì nó đang cố gắng tuân theo các tiêu chuẩn (hoặc một số trong số chúng). – Emily

+0

@Emily, không có nó sẽ không đưa IE8 vào chế độ quirks. Bạn có thể thay đổi mã để nó hiển thị chính xác trong IE8 hoặc sử dụng một trong các chế độ tương thích của nó. Nó có 6 chế độ và vì trang web của bạn hoạt động tốt dưới 6/7, bạn có thể thêm thẻ sau: để buộc IE8 sử dụng các chỉ thị IE7 tiêu chuẩn khi ở chế độ tiêu chuẩn. Chế độ Quirks sẽ là 5.5. – dalizard

0

IE8 có chế độ tương thích nên xử lý trang theo cách IE7. Bạn đã thử xem trang ở chế độ tương thích chưa?

+0

Trang trông ổn ở chế độ tương thích. – Emily

6

Thay đổi kiểu tài liệu thành HTML 5 sẽ khắc phục một số vấn đề. Tôi đã có một vấn đề với chiều rộng tối thiểu trong IE8 bằng cách sử dụng loại tài liệu nghiêm ngặt.

Vì vậy, thay đổi này:

< DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >

Để này:! < DOCTYPE html >

Xem tại đây: http://davidnaylor.org/blog/2008/09/ie8-and-max-width.html

+0

đã khắc phục sự cố của tôi, cảm ơn! – Sirber

3

Hôm nay, tôi đã thay đổi DOCTYPE của chúng tôi từ XHTML v1.0 (Strict) thành HTML5. Tôi đọc ở đâu đó rằng mặc dù IE không nhận ra DOCTYPE, chúng sẽ hiển thị trang ở chế độ tuân thủ tiêu chuẩn.

Khi tôi kiểm tra trong IE8, toàn bộ trang trông có vẻ bất ngờ (chúng tôi có khá nhiều CSS và kiểu dáng khác). Phải mất một thời gian trước khi tôi nhận ra rằng không có bất cứ điều gì "sai" với CSS, hoặc thậm chí IE8 cho vấn đề đó. Tuy nhiên, nó đã render trong chế độ quirks.

Vô tình, tôi tìm thấy câu trả lời trong câu hỏi được đăng ở đây, cụ thể là nhận xét này: "Mã nguồn có ba dòng trống trước DOCTYPE. Tôi biết rằng sẽ ném IE6 vào chế độ quirks. Nó cũng ảnh hưởng đến IE8?"

Tôi không biết về dòng trống, nhưng khi tôi thực hiện thay đổi, tôi đã sử dụng nhận xét javascript để "treo vào" tuyên bố DOCTYPE cũ của tôi (đã được BẬT DOCTYPE HTML5 mới). Khi tôi đã xóa các dòng đó (có thể đã bao gồm một hoặc hai dòng trống), đổ mồ hôi của tôi dừng lại và IE8 được hiển thị ở chế độ tuân thủ tiêu chuẩn.

+0

Bạn vừa mới tiết kiệm cho tôi nhiều giờ làm việc hacking; dao cạo đặt @ using System.Web.Optimization trên Doctype và thấp và nhìn, nó gõ tất cả các phong cách trong IE8. Tôi di chuyển nó một dòng dưới đây và tất cả đã được sắp xếp! Cảm ơn! –