由于初始化的时候有些iframe是隐藏的,当iframe被置为显示的时候,内部加载页面获取宽高为空。
由于无法获取宽高我们就没有办法根据页面宽高初始化图表元素。
有的版本浏览器只要代码初始化iframe不是隐藏,使用js隐藏的 也是没有问题。
解决问题思路:
1、判断图表所在页面宽高,小于等于0的时候,出一个固定的初始化值。
这样可以解决问题,但是 每一个页面都要加判断。
$(function(){
var winWidth = $(window).width();
var winHeight = $(window).height();
if(winWidth<=0) winWidth = 600;
if(winHeight<=0) winHeight= 400;
})
2、基于上一个解决问题思路,写一个功能方法每一个页面都加载调用。
该方法里添加判断,这是上一个方案的升级版。
//comm.js页面
var winHeight,winWidth;
$(function(){
winWidth = $(window).width();
winHeight = $(window).height();
if(winWidth<=0) winWidth = 600;
if(winHeight<=0) winHeight= 400;
})
//其他页面引用即可
3、在页面初始化的时候现实内容,等300秒再使用JS隐藏掉,这样有一个问题就是加载慢的时候可能也会出问题。并且页面iframe多的时候也会有问题。
setTimeout(function() {
$("#iframe").hide();
},300);
4、根据3的思路可以加一个iframe的onload方法,这样在加载完成后隐藏掉。这样的是多个的时候需要判断一下,完成一个隐藏一个。
parent页面
function iframeCall(){
$("#iframe").hide();
}
sub页面
$(function(){
window.parent.iframeCall();
});
第3和第4种方法会看到隐藏的内容,如果可以接受可以选择这种方式。