2009-05-29 61 views
30

Trong hệ thống dựa trên web tôi duy trì tại nơi làm việc gần đây đã phát hành, nó làm cho một yếu tố đối tượng nhúng trang web thứ hai vào trang web chính. (Có hiệu quả các trang web chính chứa các menu và tiêu đề, và các trang ứng dụng chính là trong đối tượng)Sử dụng thẻ Iframe hoặc Object để nhúng các trang web vào một trang khác

Ví dụ

<object id="contentarea" standby="loading data, please wait..." 
    title="loading data, please wait..." width="100%" height="53%" 
    type="text/html" data="MainPage.aspx"></object> 

Cũ hơn các phiên bản của ứng dụng này sử dụng một IFRAME để làm điều này mặc dù. Tôi đã thấy rằng bằng cách sử dụng thẻ đối tượng, trang web được nhúng hoạt động khác với khi nó được lưu trữ trước đó trong một IFRAME. Ví dụ, trong IE, các mẹo công cụ không được xem là có tác dụng (tôi sẽ đăng một câu hỏi riêng về điều này!) Và có vẻ như trang nhúng không thể truy cập trang cha trong tập lệnh, mặc dù nó có thể nếu nó là một IFRAME .

Tôi được cho biết lý do ưu tiên thẻ đối tượng trên IFRAME là IFRAME không được chấp nhận và do đó không thể dựa vào các phiên bản trình duyệt trong tương lai. Điều này có đúng không? Có thích hợp hơn khi sử dụng thẻ Đối tượng trên Khung nội tuyến để nhúng các trang web không? Hoặc có khả năng là IFRAME sẽ được hỗ trợ tốt trong tương lai (sau khi tôi già và xám, và qua cuộc đời hữu ích của đơn xin tôi duy trì)?

Trả lời

43

IFRAME element là một phần của upcoming HTML5 standard. Ngoài ra, HTML5 được phát triển bởi các nhà cung cấp trình duyệt chính trên mạng (Mozilla, Opera, Safari, IE), về cơ bản đảm bảo rằng chúng tôi sẽ có một phần tử IFRAME trong tương lai gần. Một số người trong số họ đã hỗ trợ một số yếu tố HTML5, như AUDIO và VIDEO và một số API JavaScript mới.

Cũng đúng là the OBJECT element is in the draft, nhưng đó là vì IFRAME và OBJECT sẽ có các mục đích khác nhau. IFRAMES chủ yếu được thiết kế cho các ứng dụng web sandboxing.

Vì vậy, lời khuyên của tôi là sử dụng IFRAME thay vì OBJECT.

+1

+1 để tham khảo và làm rõ đối tượng và iframe đó thực hiện các công việc khác nhau – annakata

8

IFRAME không phải là một phần của DTD XHTML 1.0 Nghiêm ngặt. Chúng hoàn toàn hợp lệ trong HTML 4 và XHTML 1.0 Transitional, tôi tin tưởng. Vì những lý do này, IFRAME sẽ tiếp tục được hỗ trợ trong một thời gian dài.

Rất nhiều dấu trang và mã phân tích vẫn sử dụng IFRAME.

2

Mặc dù thông số kỹ thuật W3C có thể chỉ ra rằng thẻ IFRAME đang bị phản đối, (trong XHTML ít nhất anyway), các nhà phát triển trình duyệt không nhất thiết làm theo chính xác những thông số kỹ thuật nói (IE6 ai?)

Như sử dụng iFrame Hiện tại rất phổ biến và W3C dường như không thể quyết định xem chúng có phải là một phần của tương lai hay không (HTML 4.01 so với XHTML), tôi chắc chắn rằng chúng là triển khai an toàn hơn để sử dụng cho hầu hết mọi trình duyệt.

5

Nếu bạn đang nhúng một trang HTML, đây là một sự khác biệt đáng chú ý giữa iframeobject:

  • với iframe cập nhật src sẽ thay đổi lịch sử trình duyệt (thêm một mục mới)
  • với object cập nhật data sẽ không thay đổi lịch sử trình duyệt

Ngoài ra có vẻ như kéo & thả d oes không hoạt động nếu trang được nhúng trong thẻ object nhưng hoạt động trong thẻ iframe.Tôi nhận thấy nó cá nhân sử dụng react-draggable và tôi có thể thấy ai đó có cùng vấn đề (https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working)

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