2012-12-18 30 views
1

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

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

任何机会读我的iframe的源代码,另一个域?

+0

如果跨域是可能的,人们会做各种事情。 – Kaf

+0

[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy) – epascarello

+0

如果你控制两个域,它们之间的通信是微不足道的。 –

回答

1

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

1

有HTML5的postMessage,还有URL哈希轮询(对于不支持HTML5的浏览器)。

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

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


如果没有这两个域的控制,那么你不得不拥有一个服务器端解决方案。将URL作为参数发送给您的域内服务器,并让它返回HTML。


编辑因为我将URL哈希轮询有点阐述downvotes的。尽管由于跨域限制而无法读取URL,但您仍然可以设置URL Hash(URL末尾的#字符后面的文本)。因此,您设置了散列,这不会导致页面重新加载,并且脚本可以“轮询”该散列的更改。

+0

如果iframe在另一个域中,他甚至不能读取在iframe中加载的当前URL。 –

+0

@Ivan Zuzak - 你应该阅读我发布的链接。显然,访问URL Hash(在URL末尾的#字符之后的内容,而不是加密哈希)仍然可用(尽管跨域限制),这就是为什么该方法称为URL哈希轮询的原因。 –

+0

我认为你需要详细阐述一下你的解决方案。哪个iframe /窗口做什么和什么时候做?你是否建议子iframe设置父窗口的哈希片段,并且该哈希的值是加载到iframe中的URL?如果那是想法,为什么不使用postMessage并且发送iframe的整个来源? –