我有一个用于跨域站点的iframe。 我想读取iframe的DOM,因为使用检查器,我甚至可以修改iframe的DOM,所以我相信这是可能的。 然而,我尝试阅读它的每种方式都会遇到同源策略。 我想要的只是从iframe加载到本地DOM中的内容。 我认为这应该很简单,比如$(document.body).find('iframe').html()
,但是它返回了空字符串。
我真的希望有一种方法可以做到这一点,因为我过去几天的工作都是建立在这个基础上的。
谢谢
我有一个用于跨域站点的iframe。 我想读取iframe的DOM,因为使用检查器,我甚至可以修改iframe的DOM,所以我相信这是可能的。 然而,我尝试阅读它的每种方式都会遇到同源策略。 我想要的只是从iframe加载到本地DOM中的内容。 我认为这应该很简单,比如$(document.body).find('iframe').html()
,但是它返回了空字符串。
我真的希望有一种方法可以做到这一点,因为我过去几天的工作都是建立在这个基础上的。
谢谢
有一种简单的方法。
创建一个iframe,在其源代码中设置类似于“http://your-domain.com/index.php?url=http://the-site-you-want-to-get.com/unicorn”的内容。
接下来,你只需使用$_GET
获取此URL,并使用file_get_contents($_GET['url'])
显示其内容。
这样,你将获得一个与你的域名相同的iframe,然后就可以使用$("iframe").contents().find("body")
来操作其内容。
<?php echo file_get_contents($_GET['url']); ?>
<iframe src="content.php?url=http://google.com">
var $iframeBody = $("iframe").contents().find("body"); $iframeBody.css("background", blue");
<?php echo file_get_contents('http://url_of_the_iframe/content.php'); ?>
file_get_contents($_GET['url'])
可以获取页面内容,但无法获取DOM内容!这是错误的答案。 - Bharata有一个解决方法可以实现它。
首先,将您的 iframe 绑定到具有相对 URL 的目标页面。浏览器将把 iframe 中的站点视为与您的网站相同的域。
在您的 Web 服务器上,使用重写模块将请求从相对 URL 重定向到绝对 URL。如果您使用 IIS,则建议您检查 IIRF 模块。