让birt在ie10中跑起来
来源:互联网 发布:军事机构的因特网域名 编辑:程序博客网 时间:2024/06/08 06:32
最新版本的birt4.2.2,对于ie的支持仅仅到ie8,好在birt生成的报表是纯网页格式,在ie10里其实是可以显示的,只是在采用frameset方式显示由于birt提供的js版本比较老,所以在ie11,ie10或ie9上不能运行,这个时候开源的好处就来了,下面我介绍下如何进行修改
1:去官方下载property.js 1.7版,放到webcontent\birt\ajax\core\lib\ 里 ,记得原版要备份
2:打开 BrowserUtility.js,进行修改
10-40行左右,修改成如下:
this.isIE = this.__isIE();if (document.documentMode==11){this.isIE=false;}if ( this.isIE ){this.isIE6 = false;this.isIE7 = false;this.isIE8 = false;this.isIE9 = false;if (document.documentMode) {if (document.documentMode >= 9) {this.isIE9 = true;}else if (document.documentMode >= 8) {this.isIE8 = true;} else if (document.documentMode >= 7) {this.isIE7 = true;} else {this.isIE6 = true;}}else if ( window.XMLHttpRequest ){this.isIE7 = true;}else{this.isIE6 = true;}}
3、打开 AbstractBaseReportDocument.js 121行左右,修改如下
if ( BrowserUtility.isIE6 || BrowserUtility.isIE7 || BrowserUtility.isIE8 || BrowserUtility.isIE9 || BrowserUtility.isOpera || BrowserUtility.isKHTML || BrowserUtility.isSafari)
4、打开 AbstractBaseReportDocument.js 160行左右,修改如下
if (BrowserUtility.isIE&&(BrowserUtility.isIE6 || BrowserUtility.isIE7 || BrowserUtility.isIE8))
5、打开刚刚复制过来的property.js 找到7458行左右将以下代码加入
Object.extend(Element, { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); Element[Element.visible(element) ? 'hide' : 'show'](element); } }, hide: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = 'none'; } }, show: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = ''; } }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); }, update: function(element, html) { $(element).innerHTML = html.stripScripts(); setTimeout(function() {html.evalScripts()}, 10); }, getHeight: function(element) { element = $(element); return element.offsetHeight; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).include(className); }, addClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).add(className); }, removeClassName: function(element, className) { if (!(element = $(element))) return; return Element.classNames(element).remove(className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); for (var i = 0; i < element.childNodes.length; i++) { var node = element.childNodes[i]; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node); } }, empty: function(element) { return $(element).innerHTML.match(/^\s*$/); }, scrollTo: function(element) { element = $(element); var x = element.x ? element.x : element.offsetLeft, y = element.y ? element.y : element.offsetTop; window.scrollTo(x, y); }, getStyle: function(element, style) { element = $(element); var value = element.style[style.camelize()]; if (!value) { if (document.defaultView && document.defaultView.getComputedStyle) { var css = document.defaultView.getComputedStyle(element, null); value = css ? css.getPropertyValue(style) : null; } else if (element.currentStyle) { value = element.currentStyle[style.camelize()]; } } if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) if (Element.getStyle(element, 'position') == 'static') value = 'auto'; return value == 'auto' ? null : value; }, setStyle: function(element, style) { element = $(element); for (name in style) element.style[name.camelize()] = style[name]; }, getDimensions: function(element) { element = $(element); if (Element.getStyle(element, 'display') != 'none') return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; els.visibility = 'hidden'; els.position = 'absolute'; els.display = ''; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = 'none'; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (window.opera) { element.style.top = 0; element.style.left = 0; } } }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } }, makeClipping: function(element) { element = $(element); if (element._overflow) return; element._overflow = element.style.overflow; if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') element.style.overflow = 'hidden'; }, undoClipping: function(element) { element = $(element); if (element._overflow) return; element.style.overflow = element._overflow; element._overflow = undefined; }});
以上代码是从 原property.js复制过来的
做完以上改动 就可以在ie10,ie11运行了
由于本人不用ie9 所以未在ie9 测试, ie10,11测试 也不是很充分
如果你的birt报表 没有嵌入到iframe中的话,可以不用修改的,因为birt会强制使用ie7,8 模式,但似乎在iframe中 该强制不好使
希望 能有用
0 0
- 让birt在ie10中跑起来
- 让FCKeditor在 JSP和JSF 网站项目中跑起来
- 让咱们的OpenCms在MyEcplise中跑起来
- BIRT 在IE10浏览器显示不全解决方案
- 如何将kadmelia协议在peersim中跑起来
- Android自定义的控件在eclipse中提示空指针但是在程序中跑起来没问题
- android在armv4t中跑。
- android在armv4t中跑
- 让所有网站在IE10中都以兼容模式打开
- 让对象在Unity3D中动起来
- 让oprofile在虚拟机里面跑起来
- 让Barebox在Tiny6410上跑起来
- 让python在hadoop上跑起来
- 在Eclipse中跑b3log的设置
- 第二节 在Xocde中跑起OpenCV
- 如何在代码中跑Linux指令
- 系统在本地tomcat中跑没问题。在weblogic中跑,总报:JSLoader.js 缺少'}'的错误
- 如何让你的WinForm在IE里面跑起来
- 自然语言与形式语言的区别以及特征(中/英)
- curl命令详解
- VS2010中菜单的子菜单的caption改变,再次运行生成界面还是原来的值
- 禁止ScrollView的childview自动滑动到底部
- 继承中虚函数的缺省参数值问题
- 让birt在ie10中跑起来
- printf()函数
- 【转】 android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
- 高性能stun服务器搭建
- Provider sun.tools.attach.WindowsAttachProvider could not be instant
- Linux 下Kill多进程的方法
- $_SERVER['PATH_INFO']
- Magento customer get by other attribute such as telephone
- StringUtils 工具类的常用方法