2010-09-15 48 views
20

Tôi đã nghe vô số lý do tại sao không sử dụng khung HTML, do thiếu khả năng truy cập, thiếu chung trong UX, chúng hoàn toàn không hiệu quả/không thể duy trì, hoặc chúng chỉ lỗi thời.Khi nào tôi nên sử dụng khung HTML?

này tất cả mang lại cho tôi hai câu hỏi:

  1. Có sự đồng thuận chung này ghét áp dụng đối với các iframe cũng?
  2. Trong trường hợp nào, bạn có thể chấp nhận sử dụng khung/iframe trong mã của mình?
+0

Không, iframe được miễn trừ hoàn toàn tất cả sự thù ghét. (inasmuch vì chúng là một phần của HTML5, trong khi frame/frameset là không) –

+0

Vui mừng khi nghe điều đó, vì cá nhân tôi đã sử dụng iframe trong một vài dự án XD – Moses

+0

Tôi thậm chí nghĩ rằng bộ khung có sử dụng hợp pháp, mặc dù hiếm. – recursive

Trả lời

13

(1) Không vốn có. iframe có nhiều trường hợp sử dụng không bị các vấn đề về khung. Chúng hữu ích bất kỳ lúc nào bạn muốn kết hợp trong một tài liệu từ một bối cảnh bảo mật khác, hoặc không có kịch bản và kiểu mà trang mẹ đang sử dụng.

Tuy nhiên, nó có thể 'sử dụng khung nội tuyến như khung': để chia trang thành các khu vực khung nội tuyến riêng biệt, với các liên kết chéo tạo ra một mớ hỗn độn điều hướng không hoạt động tốt với dấu trang, mở trong tab mới, v.v.

(2) Tôi sẽ không sử dụng khung cho bất kỳ thứ gì ngày hôm nay. Có một trường hợp sử dụng hạn chế cho họ giữ số lượng lớn nội dung trang mà bạn không muốn tải lại trên mỗi điều hướng. Nhưng những ngày này, chúng tôi chỉ sử dụng XMLHttpRequest để cập nhật một phần của trang thay thế.

Mặc dù vậy, không cần quan tâm để tạo các liên kết thay đổi trang (sử dụng lịch sử băm và có tương tự liên kết tĩnh cho mỗi liên kết băm, được liên kết với <a> s thực sự phản hồi cho nhấp chuột giữa et al), một trang cập nhật/điều hướng chính nó bằng cách sử dụng XMLHttpRequest sẽ tạo lại nhiều vấn đề điều hướng của khung hình, với khả năng sử dụng, khả năng truy cập và SEO có ý nghĩa tiêu cực mạnh mẽ.

Tôi thấy thật buồn khi nhiều tác giả đang tạo ra các trang web hoạt hình hào nhoáng, hiện đại, bằng cách sử dụng một cách độc đáo của jQuery, hiển thị tất cả các hành vi xấu nhất của khung hình cổ, ghét.

+0

"... bạn muốn kết hợp trong một tài liệu từ một ngữ cảnh bảo mật khác ..." - Tôi không thể t giúp đỡ nhưng cười khi tôi đọc điều đó. Đó là một sự xấu hổ mà rất nhiều người nghĩ rằng đó là một ý tưởng tốt. Phishing và Clickjacking cho chiến thắng? – jww

+0

@noloader: vâng, vâng; nó có thể có ý nghĩa trong trường hợp trang mẹ có độ tin cậy cao và nội dung khung con tin cậy thấp, vì các cuộc tấn công có thể từ con sang cha mẹ bị hạn chế hơn (các cửa sổ bật lên/tải xuống phương thức/v.v. clickjacking). Đặt các mục có độ tin cậy cao như biểu mẫu đăng nhập trong một khung trên một trang web ít tin cậy thực sự là một sai lầm thực sự. – bobince

4

(1) No. Có sử dụng hợp pháp cho iframe, không có lý do gì để sử dụng khung ngày hôm nay với trình duyệt hiện đại.

(2) Không bao giờ sử dụng khung; có các giải pháp dễ dàng hơn khác có sẵn để tạo ra hiệu ứng tương tự.

Chỉ sử dụng iframe khi nhúng toàn bộ trang web là tùy chọn hợp lý nhất. Mặc dù hiếm, có những dịp khi điều này có ý nghĩa.

Tóm lại, có lý do tại sao các thẻ khung/frameset/noframe được lấy ra khỏi HTML5, nhưng khung nội tuyến sẽ tiếp tục.

(ví dụ) Nếu trang web A có nghĩa vụ bao gồm một trang từ trang web B (giả mạo xuất hiện đến từ trang web A) thì trang web B css và javascript có thể và thường sẽ hoàn toàn trang web ống A. Đây là một lý do chính đáng.

+0

Xét điểm thứ 2 của bạn. Bạn có sử dụng iframe khi cố gắng hiển thị toàn bộ trang web bên trong một trang web khác không, ví dụ: CMS. Trang web A là backoffice cho phép quản lý nội dung và Trang web B cổng thông tin chứa nội dung có thể quản lý đó. Vì vậy, để xem trước nó trông như thế nào, cung cấp một khung nội tuyến trên trang web A? –

+1

Có, âm thanh đó giống như trường hợp sử dụng hợp pháp đối với iframe. Đó là một môi trường được kiểm soát và bạn cần hiển thị một trang web riêng biệt trong ngữ cảnh đầu tiên. – digitaldreamer

1

Nếu vì một lý do nào đó bạn có "biểu mẫu lồng nhau".

Giả sử bạn có biểu mẫu chỉnh sửa sản phẩm và bên trong biểu mẫu này, bạn có khu vực có biểu mẫu khác cho phép bạn nhập danh sách khách hàng gửi bản tin cho sản phẩm này.

Khách hàng không liên quan đến sản phẩm và không có mối quan hệ cơ sở dữ liệu với sản phẩm.Chúng là các thực thể riêng biệt tuân thủ từ sản phẩm.

Trong trường hợp này, tôi viết một khung nội tuyến với khách hàng thêm biểu mẫu và nút gửi gửi biểu mẫu bên trong IFrame.

Tôi không tìm thấy cách nào tốt hơn để triển khai kịch bản được mô tả so với sử dụng IFrame. Và có, tôi có yêu cầu có cả hai biểu mẫu trên cùng một trang và biểu mẫu bản tin phải được đặt bên trong biểu mẫu chỉnh sửa sản phẩm. Nhu cầu kinh doanh được quyết định bởi các ông chủ.

+0

+1 Để giữ mọi thứ đơn giản, thay vì sử dụng các yêu cầu HTTP không đồng bộ, chỉ cho phép POST đơn giản từ các khung riêng lẻ, sau đó cho phép làm mới trang đồng bộ chỉ trong khung đó, do đó không làm phiền bất kỳ nội dung nào khác trong các khung khác. Theo tôi, đây chính là một trong những lý do tại sao tồn tại