js如何获取跨域iframe 里面content

求教js能否获取iframe里面的通过src获取的内容;
其中src可能存在跨域。

现有的获取方式

var test = document.getElementsByClassName("iframeItem");
var content =test[0].contentDocument||test[0].contentWindow.document;

但是会报错跨域:

Blocked a frame with origin "http://xxx.com" from accessing a cross-origin frame

求大神指教

阅读 25.4k
4 个回答

我最近也遇到了这个问题,因为我需要获得iframe的高度,但是取不到,就无法撑开iframe层
我查了很多资料,但是都被跨域的问题给难住了。。
最后我看到了小tip:iframe高度动态自适应
可以利用iframe的window.top.location实现跨域,将iframe的参数通过url传给父页面
但是这个方法也不是很好,现在还没有找到更好的办法

跨域。。不能获取。。除非跨域的网站你有控制权postmessage 传递信息。。

跨域是无法解决的,如果有你有两个网站的权限的话,可以通过一些 hack 的方式绕过来通信。
如 window.frames 属性(IE并不能全兼容)
或者 https://github.com/ternarylabs/porthole

这种情况一般涉及到跨域的话,都不去直接操作dom,都会想html5的on/postmessage一样。可以利用事件进行通讯。
可以参照这里有的https://github.com/YataoZhang/xMan 看frame方法。就是处理这种情况的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题