将iframe中的html内容复制到div(ajax)中?

时间:2010-01-21 22:31:46

标签: javascript ajax iframe xss

假设我的浏览器加载了<iframe src="test.html">

的iframe

我可以使用ajax将test.html的内容加载到主html页面的div中吗?

这个想法是我的解决方案,我实际上试图通过使ajax提交给远程主机来克服限制。计划是生成具有0大小的iframe的动态页面,该页面向远程主机发出报告请求。然后,在页面(&amp; iframe内容)加载后,我将使用JS将iframe内容复制到div中。

提示表示赞赏,

谢谢你, 格言。

5 个答案:

答案 0 :(得分:2)

不,你不能。

将页面从其他域加载到iframe时,它将无法访问。您无法再访问iframe的内容,因为它来自不同的域。

我所知道的唯一可以从不同域可靠加载的是JSONP使用的脚本。

答案 1 :(得分:1)

  

我可以使用ajax将test.html的内容加载到主html页面的div中吗?

是(因为您的示例具有相对URI且位于同一主机上)...

  

这个想法是我的解决方案,我实际上是试图通过使ajax提交给远程主机来克服限制。

......而且没有。您仍然无法从远程主机读取数据。

答案 2 :(得分:1)

我确信如果我错了,有人会纠正我,但我相信跨域边界的脚本是受限制的。你试过吗?这是一个可能有用的功能。

function insertDivFromFrame(divname, framename) {
    var frame = document.getElementById(framename);
    var d = frame.contentWindow || frame.contentDocument;
    if (oDoc.document) {d = d.document;}
    document.getElementById('yourdiv').innerHTML = d.body.innerHTML;
}

我不确定此代码是否有效...请参阅http://xkr.us/articles/dom/iframe-document/以获取更多帮助。

答案 3 :(得分:0)

...但是,您可以为本地主机设计一个AJAX请求,并从远程服务器检索信息(如here所述)。

答案 4 :(得分:0)

如果你写一个php / perl / etc。脚本从另一个域输出文档的内容,它将允许您访问内容,因为结果页面将被javascript视为属于您的域。如果您不熟悉任何服务器端脚本语言,我相信您可以通过简单的谷歌搜索找到一个可以为您执行此操作的脚本。

祝你好运。