我正在使用Postmessage从我的页面中的iframe(跨域)获取正文内容的高度。下面是我在父页面中编写的代码,我编写了console.log来检查handleMessage函数的值。
var addEvent = window.attachEvent||window.addEventListener;
var event = window.attachEvent ? 'onmessage' : 'message';
addEvent(event, handleMessage);
function handleMessage(e) {
var targetHeight = e.data;
targetHeight = parseInt(e.data);
console.log(targetHeight);
$('.wrapper').height(targetHeight+'px');
}
我用于在子站点中发布高度的脚本如下:
$(document).ready(function(){
$(window).bind("resize", resizeWindow);
resizeWindow();
});
function resizeWindow(){
var body = document.body,
html = document.documentElement,
height = body.offsetHeight;
if(height === 0){
height = html.offsetHeight;
}
// * can be replaced with the live URL in production.
parent.postMessage(height, '*');
}
我页面中的子网站在页面加载中发布了四次高度但是当我检查我的控制台时它只显示两个值。
但是当我在handleMessage函数中执行alert(或settimeout())时,我可以在控制台中看到4个值。 你可以告诉我没有警告为什么我的功能没有被召唤4次?
提前致谢。