BIRT Viewer - upgrade for IE8 + [message #927807] |
Sun, 30 September 2012 02:55 |
David Good Messages: 41 Registered: September 2012 |
Member |
|
|
Viewer build in use: 4.0.2
I am providing a BIRT POC which includes use of the sample viewer and frameset mapping. I am having some issues because I need to add a specific date picker (javascriptcalendar.org/javascript-date-picker.php) already in use by the business to the date type parameter boxes. Having added the picker it works great in Chrome and Firefox. It is with IE that I ran into problems. In IE8 the picker did not work at all and in IE7 it displays behind subsequent parameters on the param pop up page.
I found that BIRT viewer forces IE7 mode at line 47 of FramesetFragment.jsp file using the following code:
<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
I have tested the removal of the IE7 code in FramesetFragment.jsp and updating AbstractBaseReportDocument.js as suggested by Emmanuel (http://www.eclipse.org/forums/index.php/mv/msg/243393/740215/). Apart from a small styling issue on the picker it seems to work now, in all browsers. I can 'fix' the IE8 picker issue by removing the line above and by modifying a date picker condition to assign CSS classes based on IE version, so now they are assigned the same way no matter what. My picker works fine in Chrome and Firefox, now works in IE8 ... but in IE7 I still have issues - it displays behind other elements (parameter boxes). IE7 has a well known bug related to positioned elements and a faulty reset of their z-index. (Details are at brenelz.com/blog/squish-the-internet-explorer-z-index-bug/).
I have decided that I will only release the picker for IE8+ and Chrome etc. What I am most concerned about is any knock on effect of removing this IE7 coding from the viewer. I can test this extensively but if I miss something obscure it may cause severe issues for end users in future, no matter their browser type/edition. There is no point breaking some part of the viewer just for this date picker.
Advice from anyone with knowledge on the topic of this 'forced IE7 mode' removal would be greatly appreciated.
Thanks in advance,
David
[Updated on: Sun, 30 September 2012 08:49] Report message to a moderator
|
|
|
|
|
Re: BIRT Viewer - upgrade for IE8 + [message #930086 is a reply to message #930015] |
Tue, 02 October 2012 02:24 |
David Good Messages: 41 Registered: September 2012 |
Member |
|
|
In an effort to get this going and start testing I performed the following changes to the viewer code. If anything stands out as incorrect or missing, please let me know. I will update any relevant test results as I go but will not be using iFrames.
Initially, I searched the viewer for any files including the string 'isIE'. Files listed were BrowserUtility.js, AbstractBaseReportDocument.js, AbstractReportComponent.js, AbstractBaseDialog.js, BirtExceptionDialog.js, BirtParameterDialog.js, BirtPrintReportDialog.js and AbstractBaseToc.js
Looking through each of the files I could only see that 4 of them would need to be updated to enable me to remove the IE7 emulation code in FramesetFragment.js:
BrowserUtility.js, AbstractBaseReportDocument.js, BirtExceptionDialog.js and AbstractBaseToc.js
I modified each of them as follows:
BrowserUtility.js
-----------------
at line 26 I added a browser detection condition and assigned true to boolen isIE8 if IE version >=8
else if ( window.XMLHttpRequest )
{
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
var ieversion=new Number(RegExp.$1);
if (ieversion >= 8) this.isIE8 = true;
else this.isIE7 = true;
}
}
else
{
this.isIE6 = true;
}
AbstractBaseReportDocument.js
-----------------------------
at lines 95 and 121 added || BrowserUtility.isIE8
to the condition: if ( BrowserUtility.isIE6 || BrowserUtility.isIE7 || BrowserUtility.isIE8)
BirtExceptionDialog.js
----------------------
at lines 47 and 58 added && !BrowserUtility.isIE8
to the condition: if ( BrowserUtility.isIE && !BrowserUtility.isIE7 && !BrowserUtility.isIE8)
AbstractBaseTOC.js
------------------
at line 396 added BrowserUtility.isIE8 ||
to the condition if ( rtl &&
( BrowserUtility.isIE6 || BrowserUtility.isIE7 || BrowserUtility.isIE8 ||
BrowserUtility.isOpera || BrowserUtility.isKHTML ||
BrowserUtility.isSafari
) )
[Updated on: Tue, 02 October 2012 02:25] Report message to a moderator
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03947 seconds