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)?
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âu trả lời:
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ố frame
và frameset
khô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ử frame
và frameset
các phần tử không giống với iframe
phần tử và chúng cũng không cho cùng một đầu ra:
Phần frameset
tử 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 iframe
HTML5 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.
Lưu ý 1: các object
yếu tố có phần trùng lặp với các iframe
yế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 iframe
phần tử có.
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).
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ự.