我在一页面设置一iframe,想让iframe的高度能够根据src源的页面的高度而自适应,我用contentDocument来获得iframe的document,可是当我的页面的域和iframe不同时谷歌他会报安全错误,而无法正确的获取到iframe的document,应该如何解决这个问题;
例如下面的例子样:
我的父页面在http://hij.kmn.net:8088/demo....
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<iframe src="http://abc.efg.net:8088/" frameborder="0" id="iframepage" onLoad=iFrameHeight()></iframe>
</body>
<script type="text/javascript">
function iFrameHeight() {
var ifm= document.getElementById("iframepage");
var subWeb = document.frames ? document.frames["iframepage"].document : ifm.contentDocument;
console.log(ifm,subWeb)
if(ifm != null && subWeb != null) {
ifm.height = subWeb.body.scrollHeight;
ifm.width = subWeb.body.scrollWidth;
}
}
;
</script>
</html>
就会报错:
Uncaught SecurityError: Blocked a frame with origin "http://hij.kmn.net:8088/" from accessing a frame with origin "http://abc.efg.net:8088/". Protocols, domains, and ports must match.
这种情况该怎样解决,如同一域下面是可以正常的!就是不同域下有什么方法解决这个问题没?
用postMessage可实现iframe跨域的通信
外部窗口
iframe
不过,考虑许多跨域的安全问题,光这样还不够的,你还需要做一些安全检查,具体百度postMessage吧。
https://segmentfault.com/q/10...