2011-07-07 39 views
8

我必须在我的网页div中包含一个网页。我想用iframe这样的东西来完成DIV。基本上,我将为我的div提供一个URL,并且必须在其内部打开它...在现代HTML中,我们是否有这样的东西?我无法使用框架,因为某些浏览器对框架有问题。在div中包含一个网页

+0

我怀疑,你必须使用'iframe'少的问题比你会通过重新'用'div' iframe'功能。您使用'iframes'(或'frame's)时遇到哪些浏览器有问题? –

+0

找不到任何投票下来,这只是一个简单的问题,因为Chrome浏览器不允许帧间通信 – Varun

+0

Chrome允许帧间通信。没有CORS,它不允许域间通信,但这是根据规范。 – Quentin

回答

3

没有。您不能在另一个div元素中嵌入完整的HTML文档,因为这是一个块级元素,并且W3C已经定义了其中可能包含的内容。

但有一个解决方法。请按照下列步骤:

  1. 获取使用文件AJAX(jQuery的岩石,请使用)
  2. 提取<body>元素的内容并把它你div元素中
  3. 获取<head>元素的所有链接和脚本并将它们追加到现有pgae的<head>元素中。
+0

不错的建议 – Varun

+2

你会遇到一个跨站点脚本错误 – kleinohad

+1

我意识到这是一个旧的,但我有相同的要求。如果你使用这个想法,你会遇到'id'属性的问题吗? (你可能在“合并”的页面上有两个相同的id)重复的id可能会弄乱浏览器和任何'js'查询代码... – Jess

1

你应该使用iframe。这基本上是iframes的用途。如果你坚持使用现代浏览器,无论如何他们不会有iframe问题(不会超过你将不得不面对的使用div的代替)...

0

本应该是问题本身,但是OP澄清了他不想使用iframe的原因是因为不允许帧间通信。那么,这不是代理+ postMessage无法解决。

我相信根本没有办法实际将完整的文档嵌入到另一个文档中,保留诸如样式和脚本等的分离之类的东西,而不用某种意义上的框架。

0

这实际上是赛义德回应的延伸。为了解决跨站点脚本问题,您必须在自己的服务器上编写一个脚本,该脚本执行CURL调用来嵌入网页。然后,您的JavaScript将调用此脚本,并将该URL作为GET/POST参数传递。

我同意很多其他人在这里,这是一个情况下,你真的应该只使用一个iframe ...我相信你可以设置没有src标记的iframe,并手动将其中的内容。这意味着你不需要采取赛义德建议分解头部和身体的步骤。但是,您仍然需要我描述的脚本来解决跨站脚本问题。

16

尝试使用<object>元素:

<div style="margin: 0 auto; width:100%; height:400px;"> 
    <object type="text/html" data="**URL to page**" 
      style="width:100%; height:100%; margin:1%;"> 
    </object> 
</div> 
+0

它兼容哪些浏览器/版本? – checksum

相关问题