Tại sao các khung không được dùng trong HTML5, nhưng không phải là iFrames?


67

Tại sao các khung không được dùng trong HTML5, nhưng không phải là iFrames? Rốt cuộc, gần như không có sự khác biệt giữa hai. Trong nhiều trường hợp sử dụng một trong hai sẽ cho cùng một đầu ra (xin lỗi nếu tôi sai)?



cảm ơn vì liên kết, nhưng có gì khác biệt nhỏ giữa hai thứ đó, rằng iframe không bị phản đối.

1
Bởi vì khung là một ý tưởng khủng khiếp ngay từ đầu nhưng iframe có một vài trường hợp sử dụng hợp pháp?
GordonM

Câu trả lời:


81

Có một vài quan niệm sai lầm trong bài viết của bạn. Đầu tiên, các yếu tố frameframesetkhông bị phản đối trong HTML5, chúng đã lỗi thời (nghĩa là chúng đã bị xóa hoàn toàn).

Thứ hai, các phần tử frameframesetcác phần tử không giống với iframephần tử và chúng cũng không cho cùng một đầu ra:

  • Phần framesettử thay thế phần tử cơ thể trong các trang làm phương tiện để bao gồm một mô hình tài liệu khác cho các trang web: chúng không tốt cho khả năng sử dụng và khả năng truy cập và những gì chúng dự định thực hiện đã được thay thế hoàn toàn bằng CSS và phát triển phía máy chủ phổ biến.

  • Mặt khác iframe, phần tử không thay thế phần thân của trang. Nó hoạt động như một phương tiện để bao gồm một bối cảnh duyệt mới được nhúng trong một khối nội dung. Nó không gặp phải các vấn đề về khả năng sử dụng hoặc khả năng truy cập giống như mô hình frameset và được sử dụng ở hầu hết mọi nơi mà người ta cần bao gồm bối cảnh duyệt web nhúng (các widget là ví dụ phổ biến nhất). 1

Trong iframeHTML5 cũng có các tính năng bổ sung ở chỗ nó có thể được hộp cát , cho phép tài liệu gốc quyết định những gì được thực thi trong nó. Điều này cho phép một số biện pháp bảo mật cho tài liệu gốc (và khách truy cập vào tài liệu gốc) khi nhúng nội dung không đáng tin cậy.


Ghi chú

Lưu ý 1: các objectyếu tố có phần trùng lặp với các iframeyếu tố, nhưng nó có một mô hình nội dung khác nhau (mà được thiết kế chủ yếu cho các plugins), đã thiết lập riêng của mình hãy cẩn thận, và không có sandboxing thuộc tính iframephần tử có.


8
Tại sao các phần tử frameset không tốt cho "khả năng sử dụng" và "khả năng truy cập" nhưng các phần tử iframe không có?
meriton - đình công

18
@meriton Bộ khung xây dựng một trang trong số nhiều tài liệu có cùng mức độ ưu tiên: điều này gây ra những thách thức cho trình đọc màn hình không biết nên tập trung vào tài liệu nào vào bất kỳ thời điểm cụ thể nào. Mặt khác, các thành phần iframe chỉ được nhúng vào một trang: không khác gì có hình ảnh nhúng.

9
Những thách thức đối với người đọc màn hình: Những người mù mà tôi đã nói đều nói rằng họ thích điều hướng bị mắc kẹt trong một khung riêng (không phải iFrame) vì họ có thể bỏ qua và chỉ đọc cho họ khi họ muốn. Thủ phạm thực sự cho trình đọc màn hình là Javascript và AJAX khiến các trang hoàn toàn không sử dụng được với trình đọc màn hình hiện tại (tốt, thông tin của tôi là khoảng 10 tháng). Kinh nghiệm cá nhân của tôi với trình đọc màn hình hỗ trợ này.
GlenPeterson

4
Tôi đã tự hỏi nếu rất nhiều xác nhận khả năng truy cập thường được sử dụng trong năm 2005 đã không quá hạn cho một bản cập nhật. Cảm ơn sự bất đồng về điều đó.
Erik Reppen

1
@GlenPeterson có thể đạt được hiệu ứng tương tự mà không có phần tử khung bằng cách sử dụng CSS để làm cho phần tử khối được cố định trong chế độ xem. Đó là cách nó nên được thực hiện nếu bạn muốn loại điều hướng đó. Nó có ý nghĩa hơn.
netrox

8

Khung (frameset) hoạt động như tài liệu. Nó bị xóa vì nó phá vỡ cấu trúc và điều hướng tài liệu HTML. Ví dụ. bạn có các liên kết trong một khung, nội dung khác, bạn không thể mở liên kết từ trang trong một cửa sổ mới, bạn không thể liên kết đến trang phụ cụ thể, v.v.

Mặt khác, iframe sẽ không phá vỡ bất cứ thứ gì nếu được sử dụng đúng cách vì chúng có nghĩa là nội dung hộp cát (ví dụ: quảng cáo).


7

Các khung thường được sử dụng theo cách chúng phá vỡ nguyên tắc cơ bản của Web - rằng mỗi tài liệu có một URL duy nhất. Điều này dẫn đến các vấn đề với liên kết, đánh dấu, công cụ tìm kiếm, vv

Việc sử dụng điển hình của bộ khung sẽ là một khung ở trên cùng với logo hoặc tiêu đề, khung ở bên cạnh với menu và khung nội dung. Nhưng các công cụ tìm kiếm lập chỉ mục các trang riêng lẻ, vì vậy khi bạn tìm thấy một số trang trong Google, nó sẽ liên kết trực tiếp đến trang nội dung mà không có bộ khung, do đó bạn mất điều hướng. Vấn đề với các liên kết và dấu trang là bạn thường muốn liên kết hoặc đánh dấu một trang nội dung cụ thể bên trong bộ khung, mà không làm mất bộ khung. Không có cách nào dễ dàng để làm điều đó.

Lý do các bộ khung trở nên phổ biến ở nơi đầu tiên là vì chúng cho phép một tiêu đề và menu được định vị tĩnh với một vùng nội dung cuộn. Nhưng điều đó có thể đạt được dễ dàng hơn nhiều với CSS ngày nay. Hơn nữa, các khung cho phép bạn sử dụng các yếu tố phổ biến như logo và menu trên nhiều trang mà không cần sử dụng bất kỳ mã hóa phía máy chủ nào. Đây là một lợi thế tại thời điểm mà mã hóa phía máy chủ rất tẻ nhạt và dễ bị lỗi (ví dụ như tập lệnh CGI) và nhiều máy chủ không cho phép tập lệnh phía máy chủ. Ngày nay với Hệ thống quản lý nội dung (CMS) và các nền tảng phía máy chủ tốt hơn, điều này được xử lý tốt hơn nhiều về phía máy chủ.

Vì vậy, về cơ bản không có lợi thế để sử dụng bộ khung, chỉ có rất nhiều vấn đề.

IFrames có thể được sử dụng giống như cách sử dụng bộ khung, và trong trường hợp đó, chúng cũng dẫn đến các vấn đề tương tự. Nhưng cũng có nhiều cách sử dụng iframe hợp pháp mà không dẫn đến các vấn đề tương tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.