D-N*_*ice 71 html javascript iframe jquery html5
我有一个跨域网站的iframe.我想读取iframe的DOM,我认为这是可能的,因为使用检查器,我甚至可以修改iframe的DOM.然而,我试图阅读它的每一种方式,我都遇到了相同的原始政策.我想要的只是从iframe加载到我的本地DOM中的内容.我以为它会那么简单$(document.body).find('iframe').html(),但那会返回空字符串.
我真的希望有一种方法可以做到这一点,因为我过去几天一直在做的工作是基于这种可行性.
谢谢
Mát*_*ond 72
你不能.XSS保护.javascript无法读取跨站点内容.没有主要的浏览器会允许你.对不起,但这是一个设计缺陷,你应该放弃这个想法.
编辑
请注意,如果您对加载到iframe中的网站具有编辑权限,则可以使用postMessage(另请参阅浏览器兼容性)
Clé*_*nay 14
有一个简单的方法.
你创建了一个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")来操作内容.
如果您可以访问iframed页面,则可以使用easyXDM之类的东西在iframe中进行函数调用并返回数据.
如果您无权访问iframed页面,则必须使用服务器端解决方案.使用PHP,你可以做一些快速和脏的事情,如:
<?php echo file_get_contents('http://url_of_the_iframe/content.php'); ?>
Run Code Online (Sandbox Code Playgroud)
如果您有权访问加载的域/iframe,那么您可以使用 window.postMessage 在 iframe 和主窗口之间进行通信。
在 iframe 中使用 JavaScript 读取 DOM 并通过 postMessage 将其发送到顶部窗口。
更多信息:https : //developer.mozilla.org/en-US/docs/Web/API/Window/postMessage