jQuery 跨域 iframe innerHtml

Posted

技术标签:

【中文标题】jQuery 跨域 iframe innerHtml【英文标题】:JQuery cross origin iframe innerHtml 【发布时间】:2017-05-09 10:26:14 【问题描述】:

我想读取已加载第三方 URL 的 iframe 内容。

我可以从 iframe 到表单 postMessage 简单字符串。但是想要传递 innerhtml 或者想要从卸载回调中访问它。它总是提供跨域。请告诉我如何访问远程站点的 HTML 并将其发送到表单?

HTML代码如下:

// 这里不知怎么想发送iframe的html......
<p><a href="http://thirdparty_url.com/" target="myFrame">ICWT Page</a></p>

脚本和消息后代码:

<script type="text/javascript">

    function on_load(iframe,mystring, mywindow) 
        var win = (iframe.contentWindow || iframe.contentDocument);

        // or here want to access HTML of iframe and post to form.

        alert(mystring);

        mywindow.postMessage(mystring, "*");
    ;

    function listener(event) 
        alert(event.data);
    

    if (window.addEventListener) 
        window.addEventListener("message", listener, false);
    
    else 
        attachEvent("onmessage", listener);
    
</script>

或者将innerHtml从iframe发送到on_load();

< iframe src="index.cfm" name="myFrame" onload="on_load ( this, document.body.innerHtml, window ) ">< /iframe > 

此处为 document.body.innerHtml -> 我试图假设它具有已加载第三方 url 的 iFrame 内容。

【问题讨论】:

您能否编辑您的问题而不是添加 cmets?当然如果与问题有关:) 【参考方案1】:

也许这个答案有点晚了,但如果我理解你的问题,如果没有加载到你 iframe 中的页面的合作,这是不可能的。如果它在您的域之外的另一个域上,则必须使用 window.postMessage 向您发送其 innerHTML。

https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

编辑:最后,我自己还没有尝试过。但如果 iframe 认为网页来自您自己的服务器而不是其他地方,这可能会起作用...?

How to use Cors anywhere to reverse proxy and add CORS headers

【讨论】:

以上是关于jQuery 跨域 iframe innerHtml的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 跨域 iframe 脚本

iframe跨域上传图片

使用 jquery.ba-postmessage 的 iframe 动态高度跨域

使用 Jquery/CSS 进行跨域 iframe 控制/加载

jquery 如何实现跨域载入其他网站的页面内容

jQuery(javascript)无法跨域,怎么解决?是想获取iframe的框架里面的东西!!