在另一个域上阅读iframe的源代码

时间:2012-12-18 15:41:40

标签: javascript html5 cross-domain

我需要阅读一个iframe的源代码内容,这是一个跨域

  <script type="text/javascript">
     $(document.getElementById("iFrame")).ready(function(){
     var iframe = document.getElementById('iFrame');
     var innerDoc = iframe.contentDocument;
    });

有机会在另一个域上阅读我的iframe源代码吗?

2 个答案:

答案 0 :(得分:1)

正如评论者所指出的,这是一个跨域请求,因此它不能作为AJAX请求工作。您可以尝试在自己的域上创建一个端点,您可以提交一个AJAX请求,然后从URL服务器端检索内容。

答案 1 :(得分:1)

有HTML5 postMessage和URL哈希轮询(适用于不支持HTML5的浏览器)。

https://developer.mozilla.org/en-US/docs/DOM/window.postMessage

http://softwareas.com/cross-domain-communication-with-iframes


如果您无法控制这两个域,那么您将无法使用服务器端解决方案。使用URL作为参数向域内服务器发送ajax请求,并让它返回HTML。


编辑由于存在downvotes,我将详细阐述URL哈希轮询。尽管由于跨域限制而没有对URL的读访问权限,但您仍然可以设置URL哈希(URL末尾的#字符后面的文本)。因此,您设置哈希值,这不会导致页面重新加载,并且脚本可以“轮询”该哈希值的更改。