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.ba-postmessage 的 iframe 动态高度跨域