在基于Web的系统中,我维护最近上线的工作,它使Object元素在主网页中嵌入第二个网页.(实际上主网页包含菜单和标题,主应用程序页面在对象中)
例如
此应用程序的旧版本使用IFRAME执行此操作.我发现通过使用object标签,嵌入式Web页面的行为与先前在IFRAME中托管的行为不同.例如,在IE中,工具提示看起来不起作用(我将发布一个单独的问题!),看起来嵌入式页面无法访问脚本中的父页面,尽管它可以是IFRAME .
我被告知在IFRAME上支持对象标记的原因是IFRAME已被弃用,因此不能依赖于未来版本的浏览器.这是真的吗?是否最好在Iframe上使用Object标签来嵌入网页?或者很可能IFRAME将来会得到很好的支持(很久以后我老了,灰色,并且超过了我维护的应用程序的使用寿命)?
在IFRAME元素是部分即将到来的HTML5标准.此外,HTML5是由主要的浏览器厂商(Mozilla,Opera,Safari,IE)开发的,它们基本上保证了我们在可预见的未来将拥有一个IFRAME元素.其中一些已经支持一些HTML5元素,如AUDIO和VIDEO以及一些新的JavaScript API.
OBJECT元素在草稿中也是如此,但这是因为IFRAME和OBJECT有不同的用途.IFRAMES主要用于沙盒Web应用程序.
所以,我的建议是使用IFRAME而不是OBJECT.
IFRAME不是XHTML 1.0 Strict DTD的一部分.我相信它们在HTML 4和XHTML 1.0 Transitional中完全有效.仅凭这些原因,IFRAME将继续得到长期支持.
许多bookmarklet和分析代码仍然使用IFRAME.
如果您要嵌入HTML页面,则以下是iframe
和之间的一个明显区别object
:
与iframe
更新src
将改变浏览器历史记录(添加新条目)
与object
更新data
不会改变浏览器历史记录
此外,如果页面嵌入在object
标记中,拖放操作似乎不起作用,但在iframe
标记中有效.我注意到它个人使用react-draggable
,我可以看到有人有同样的问题(/sf/ask/17360801/)