解决办法一
http://my.oschina.net/lhplj/blog/191825
这种解决办法是强制更改浏览器的渲染模式,虽然可以解决BIRT在iframe下不显示的问题,但同时会带来其它界面上的显示问题。
解决办法二:
![](http://static.oschina.net/uploads/space/2014/0516/105710_9hrH_1167544.jpg)
可在webcontent/birt/ajax/ui/report/下找到AbstractBaseReportDocument.js文件,并找到如下
this.__instance.style.left = containerLeft + "px";
if (BrowserUtility.isIE) {
var reportContainer = this.__instance.firstChild;
if (reportContainer != null) {
var scrollBarWidth = BrowserUtility._getScrollBarWidth(reportContainer, width, height);
var containerWidth = "100%";
if (height < reportContainer.offsetHeight && width > scrollBarWidth) {
containerWidth = (width - scrollBarWidth) + "px";
}
reportContainer.style.overflowX = "visible";
reportContainer.style.overflowY = "visible";
reportContainer.style.position = "relative";
reportContainer.style.width = containerWidth;
}
}
将其修改为
this.__instance.style.left = containerLeft + "px";
var mddv = document.documentMode;
if (BrowserUtility.isIE && mddv >=9) {
//IE9或更高的不需要任何处理
} else if (BrowserUtility.isIE) {
var reportContainer = this.__instance.firstChild;
if (reportContainer != null) {
var scrollBarWidth = BrowserUtility._getScrollBarWidth(reportContainer, width, height);
var containerWidth = "100%";
if (height < reportContainer.offsetHeight && width > scrollBarWidth) {
containerWidth = (width - scrollBarWidth) + "px";
}
reportContainer.style.overflowX = "visible";
reportContainer.style.overflowY = "visible";
reportContainer.style.position = "relative";
reportContainer.style.width = containerWidth;
}
}
之后保存,清空IE缓存再次查看就发现问题解决了。(如果还没出来,通过IE控制台查看脚本文件加载的是否是修改后的,IE有点恶心,想不明白原因,后台部署的项目中的脚本都已经改过了,即使清空了缓存,还是加载原来的)。