2012-03-09 22 views
5

Firefox có dung sai nhất định khi hiển thị HTML xấu. Điều này có nghĩa là ngay cả khi thẻ đóng bị bỏ qua, HTML sẽ được hiển thị như thể mọi thứ đều ổn. Khía cạnh khoan dung này đặc biệt phù hợp khi một người sử dụng JavaScript để thao tác hoặc thêm nội dung trong trang hiện tại.Vô hiệu hóa tính dung sai (hoặc cho phép mức độ nghiêm ngặt) trong Firefox khi kết xuất HTML

Vì tôi sử dụng Firefox làm trình duyệt thử nghiệm/phát triển chính của mình, tôi đã gặp rắc rối nhiều lần bởi hành vi này mà hậu quả là mất chức năng trong các trình duyệt "nghiêm ngặt hơn". Ví dụ, cùng một mã trong Microsoft Internet Explorer không thể tạo ra bất kỳ đầu ra hiển thị nào do thẻ bị thiếu đã đề cập trên nội dung được thêm vào.

Bây giờ câu hỏi đặt ra là liệu có cách nào yêu cầu Firefox nghiêm ngặt hơn về HTML được chấp nhận và không thay vì "đoán sửa lỗi" cho nó (đặc biệt khi HTML được thêm qua JavaScript)?

PS: Tôi đã thử chơi với DOCTYPE nhưng kết quả giống nhau.

+1

tôi đoán firefox chỉ nghiêm ngặt đối với XTHML (với loại tài liệu chính xác) – Aprillion

+0

Bạn có thể hiển thị ví dụ về tệp được Firefox trả lại nhưng ngắt (không hiển thị bất kỳ thứ gì) trong IE không? Kinh nghiệm của tôi là các lỗi như các thẻ kết thúc bị thiếu được xử lý nhiều hơn giống nhau trong tất cả các trình duyệt chính. Chắc chắn, các trình duyệt khác nhau xử lý các lỗi khác nhau, nhưng thường không phải là điều này. –

+0

@MrLister sẽ làm việc trên đó và cập nhật câu hỏi – Unode

Trả lời

1

Tất cả các trình phân tích cú pháp đều được tha thứ ở một mức độ nào đó. Hầu hết các trang web chính thống có lỗi (không phải là điều này làm cho nó có thể tha thứ, chỉ cần nói). Nếu bạn phát triển với một trình sửa lỗi đính kèm, bạn sẽ bắt gặp các lỗi tập lệnh nhanh hơn nhiều. Tôi cũng bắt lỗi script bằng cách sử dụng một minifier trong quá trình xây dựng của tôi (mà sẽ thất bại về các vấn đề cú pháp lớn). Tôi hợp lệ đánh dấu HTML của tôi bằng cách sử dụng cảnh báo thời gian thực của Visual Studio 2010 (không phải lúc nào cũng hoàn hảo) và định kỳ sử dụng dịch vụ trình xác thực w3.

Đối với lựa chọn trình duyệt, tôi thường phát triển trên bảng; trong một lần ngồi, tôi có thể chuyển đổi giữa các chế độ IE7/8/9, Chrome và Firefox. Safari và Opera thường hoạt động nếu các trình duyệt nói trên được đề cập đến. Bằng cách này tôi không nhận được quá xa xuống một con đường sai lầm.

BTW, DOCTYPE là quan trọng (ngay cả khi nó không luôn luôn có vẻ như vậy).

+0

Làm cách nào để bạn xác thực HTML được lắp ráp trong JavaScript? Nó không tồn tại trước khi thực hiện ... – Unode

+0

@Unode - câu hỏi hay. Tôi dựa chủ yếu vào một khung công tác (như jQuery) để tạo đánh dấu tốt (mặc dù nó vẫn có thể không hợp lệ, ví dụ như các thẻ lồng nhau bất hợp pháp). Nếu tôi đã tạo ra một số lượng lớn các đánh dấu, tôi có lẽ sẽ đổ nó thô vào một cửa sổ giao diện điều khiển trước khi trình duyệt định dạng/làm lại nó. Sau đó tôi sẽ kiểm tra trực quan hoặc dán nó vào trình xác nhận. Bây giờ bạn đề cập đến nó, có một cách thanh lịch hơn để làm điều này sẽ được tốt đẹp. –

+0

@Unode trong Firefox, chọn tất cả, nhấp chuột phải + "Hiển thị nguồn lựa chọn" sẽ hiển thị nội dung đã tạo! –

1

Tôi thấy rằng tốt nhất là bạn nên chia nhỏ và thực hiện công việc chính trong IE.

Nếu bạn sử dụng loại tài liệu tốt (<! DOCTYPE html >) và đặt tiêu đề x-ua tương thích sang chế độ IE8, công việc phụ bạn phải làm để làm cho ứng dụng hoạt động/trông đẹp hơn trong các trình duyệt khác .

+0

Làm việc chủ yếu với IE là một giải pháp khó khăn vì Windows không phải là môi trường phát triển.Tôi không quen thuộc với tiêu đề tương thích x-ua, có vẻ như ma thuật đen :) – Unode

2

Không sử dụng trình duyệt để kiểm tra HTML của bạn; chúng không được thiết kế để làm điều đó. Sử dụng trình xác thực thực tế, chẳng hạn như the W3C's validator. Có appear to be nhiều tiện ích mở rộng của Firefox sẽ xác thực trang bằng một lần nhấp hoặc tự động, mặc dù tôi không quen với chúng vì tôi không sử dụng Firefox làm trình duyệt chính của mình.

+0

thậm chí Notepad ++ có plugin cho điều đó, ví dụ: TextFX> 'TextFX HTML Tidy' – Aprillion

+0

Trình xác nhận HTML http://users.skynet.be/mgueury/mozilla/ là trình xác thực tốt – Variant

+0

Vấn đề là, nếu HTML được xử lý bằng Javascript," mã nguồn "không còn là tệp phẳng và thay vào đó là một phần của DOM trong trình duyệt. Trong trường hợp này, sự khoan dung đã diễn ra và bất kỳ xác thực trong trình duyệt nào sẽ không xác định được các lỗi post-JavaScript. Tôi sử dụng phần mở rộng @Variant được đề cập và nó có một "Validate sau khi thao tác JavaScript", nhưng nó chỉ có thể tìm thấy một tập con của các lỗi mà trong một số điều kiện đã được tìm thấy là không đủ. – Unode

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