IE8下iframe中嵌套帆软报表页面显示空白问题
程序员文章站
2022-07-06 13:46:30
...
前两天项目组发现一个问题,在IE8下使用标签页+iframe显示多个页面的时候,打开其他页面都正常,但是打开使用帆软报表软件(FineReport)开发的报表页面就显示空白,奇怪的的是看状态栏有加载相应页面,而且改变一下iframe的窗口大小(例如按F11全屏)页面就会立刻显示出来,感觉就是页面从服务端加载后受到什么阻塞没有最终渲染出来。问题很难诊断,特别是现在都升级到IE9/IE10了,使用开发人员调试工具(F12)切换成IE8的浏览器模式查看时运行正常(可能是修复了以前的BUG),远程到项目组查看又各种慢和不方便,把我纠结死。今天在同事的帮助下,借助她电脑上的IE8,经过反复测试验证,终于打到了问题所在T_T,赶紧记录下来,以免忘记。
由于整体是使用了DIV+iframe搭的框架,DIV元素有absolute和relative各种定位,而影响报表页面加载的“罪魁祸首”即是iframe上层节点中"position:relative"的定位(我还是更怪罪IE8的BUG!其他版本IE及其他浏览器都米有问题呀~~),解决方法非常简单:iframe样式也加上"position:relative"。
但我现在仍然不明白为什么上层节点(不一定是父节点)设置过position而iframe不指定postion就会出现这样的问题,目前怀疑是因为帆软报表页面里面有一些去判断或计算外层窗口位置的脚本,可能在计算时出现了问题影响到页面渲染。如有哪位大虾路过并且知道原因的,烦请相告,谢谢~
由于整体是使用了DIV+iframe搭的框架,DIV元素有absolute和relative各种定位,而影响报表页面加载的“罪魁祸首”即是iframe上层节点中"position:relative"的定位(我还是更怪罪IE8的BUG!其他版本IE及其他浏览器都米有问题呀~~),解决方法非常简单:iframe样式也加上"position:relative"。
但我现在仍然不明白为什么上层节点(不一定是父节点)设置过position而iframe不指定postion就会出现这样的问题,目前怀疑是因为帆软报表页面里面有一些去判断或计算外层窗口位置的脚本,可能在计算时出现了问题影响到页面渲染。如有哪位大虾路过并且知道原因的,烦请相告,谢谢~