Remedy Magic Service Desk & Internet Explorer 8: The Workaround / Fix

Update 20090907: Thanks to a smart workaround (in a comment below) by Andy Whelan, the fix is now without any user interaction. Change the erroneous line 978 ‘ListTable.dataPageSize = PageSize’ in file Program Files\Remedy\Magic Service Desk\Application Server\Scripts\commondetailstab.js to ‘try{ListTable.dataPageSize = PageSize}catch(err){}’ and start using IE8 =)

So you installed Internet Explorer 8. You read stories on the Internet about people cursing because things don’t work with IE8. Well, you think, they could’ve known. IE8 is W3C compliant, IE6 an IE7 are not. So all people using IE-only websites and applications now have a problem. But you are happy. The installation went fine (due to a fresh install, but whatever) and all your sites seem to work fine. It shouldn’t be a problem anyway, because if some site might not work, you have Minefield/Chromium/Opera. But then… you open Magic Service Desk, login, open an incident to add some details and…. hmmm

magic1

Argh. There you are. Error on page. No incident details. IE can tell you there is an error on line 978 in the file http://<MSD web server>/magic/Scripts/CommonDetailsTab.js. I looked into this file and it seems the DataPageSize property is IE only.

A quick Google search shows this is a known problem and Remedy recommends uinstalling IE8 (offline). Wait, not so fast!

First thing to do is to revert to ‘IE7 compatibility mode’. Open the Tools menu and select the compatibility option.

magic3

Oh wait… intranet addresses are selected by default (second checkbox from bottom)….

magic4

I guess Microsoft knows that the majority of applications are available only on the intranet and that IE6 is still the default browser in most companies. But wait, that means that the IE-7 compatibility mode doesn’t work as I expected. Thinking about it, it would be rather weird if IE8 had the completely different IE7 rendering engine under the hood.

Hmmm, so now what? Revert to IE7? No way, I want a W3C compliant browser! I found a way, but I must warn you, it’s ugly.

First, deselect the ‘Disable script debugging (Internet Explorer) option in Tools->Options->Advanced Tab

magic2

Now, open the incident in Magic Service Desk. You will be prompted to start the Javascript debugger.

magic5

Select Yes. You will jump into the debugger and go straight to the erroneous line in the javascript file.

magic6

Now we are going to ‘jump’ over the error. That means that this specific line will not be executed (interpreted). Press F11 then press Shift-F5 and then press Alt-Tab. Tada! You’re back at your incident and you see your incident details =)

Inserting  incident details follows the same path. Every time line 978 is called in the Javascript file, you’ll  have to jump over it to continue. As I said, ugly, but… it works!

Well, that’s it. Good luck to all of you and let’s hope Remedy will fix this soon. It’s kinda scandalous that this browser is available for over 6 months for developers for testing purposes and that NOBODY at Remedy seems to have taken the 30 minutes to download and test IE8 beta 1, beta 2 or RC1 on their product. Shameful…

I’ll post more if I find more apps/websites that don’t work on IE8. Stay tuned =)

Tested on Remedy Magic Service Desk 8.00.1803 and Internet Explorer 8.0.6001.18702 (Dutch version)

Advertisements

About Yuri de Jager
Technology Addict

17 Responses to Remedy Magic Service Desk & Internet Explorer 8: The Workaround / Fix

  1. bobby bob says:

    Im wondering if there are any updates to this solution you worked out. Has IE8 fixed there end or has Remedy fixed there end for MAGIC

  2. Thien Ton says:

    Yes I hope either IE8 or Magic fix themself. It’s annoying that you have to step over in the debugger every time you want to see ticket’s detail.

  3. Andy Whelan says:

    Hi,
    You can modify the javascript file line 978 with the following try/catch:
    try { ListTable.dataPageSize=PageSize } catch {}

    In IE8 it seems you can write to the dataPageSize property, and the property gets set, however an error is generated.

    As the original post stages, you can step over the error and all is well – so simply handle the error in the javascript, and again all is well.

    Hope that helps.
    Andy

  4. Yuri de Jager says:

    Andy, excellent tip!

    The correct syntax would be:

    try { ListTable.dataPageSize=PageSize } catch(err){}

    I can confirm this is working on IE7 version 7.0.5730.13. I will now upgrade to IE8 and report here if it’s working.

  5. Andy Whelan says:

    Of course, my mistake – I left out the (err).
    I have tried this in IE 8.0.6001.18702 and it appears to work.
    Thanks for the correction!
    Andy

  6. Yuri de Jager says:

    Yes, IE 8.0.6001.18702 is working here too.

    I still get an ‘Interface not supported’ error in CommonDetailsTab.vbs on line 548 (objNewWindow = myOpenWindow(strWin, WinName, strFeatures)) though, but it doesn’t seem to interfere with the functionality of the software. When the debugger is disabled, the error is ignored and invisible.

    This situation is acceptable for me, I will update this blogpost =)

  7. Striff says:

    Ok, SO whats the proceedure to modify the javascript file line.

    THe 1st method works, the 2nd:
    I open script debugger. Click on the 2nd window pane and click Watch.
    Click and add try { ListTable.dataPageSize=PageSize } catch(err){}

    if I close the script debugger it doesn’t work and opening it back up does not save this. I also don;t have an option to save when in the debugger..

  8. Striff says:

    The 2nd method, what do you mean without user interaction.

    I tried this, and the debugger comes up, add the line to the “Watch” and works only for that instance, re-open it and asks to be de-bugged again.

    Where’s the spot to put this line in?
    \Cheers

  9. Yuri de Jager says:

    Hi Striff, just open the file %Program Files%\Remedy\Magic Service Desk\Application Server\Scripts\commondetailstab.js in a text editor on the server Change the erroneous line 978 ‘ListTable.dataPageSize = PageSize’ to ‘try{ListTable.dataPageSize = PageSize}catch(err){}’ and save the .js file.

  10. Striff says:

    THanks,
    That worked.

    Some minor exceptions, our location is C:\program files\BMC\Service Desk Express………

    Line is 1002

    Editing this line now fixes it, well sort of.
    The details tab comes up blank, but loaded, when clicking the other tabs (Work Orders \ Attachments) then clicking back into Incident Details it then it brings up the information.

    where before it would be stuck on loading..

  11. Al says:

    This works wonders, however, I had to append more code to get it working for us here.

    After changing the line to the try/catch, it then wouldn’t work anymore in IE7. So I threw in a browser version check and it works fine now in IE7 and IE8. Figured I’d toss that out there in case anyone ran into that problem as well:

    if(navigator.appVersion.search(“MSIE 7.0”) != -1){
    ListTable.dataPageSize = PageSize
    }
    else{
    try { ListTable.dataPageSize=PageSize } catch(err){}
    }

    Compatability mode for IE8 has to be off, or it will report itself as MSIE 7.0 and the code will still error out.

  12. Stan says:

    Hey Al,
    Are you able to upload your CommonDetailsTab.js file somewhere? I’d like to take a look at it and ensure that my corresponding file has been modified correctly.

    If this works, I can ditch my VPC that I’m running simply to use IE7 with Remedy!!

    How awesome would that be?

    Thanks

  13. Al says:

    I can e-mail you the file if you like, can’t put the whole code in here, it’s way long. Basically, the only thing I touched was the SetPageSize() function.

    It can be found around line 997.

    function SetPageSize(){
    nScrollBarHeight=15
    nHeaderHeight=ListTable.rows(0).offsetHeight
    nBufferHt=nScrollBarHeight+nHeaderHeight
    PageSize=Math.floor((document.all(“DIVTABLE”).offsetHeight-nBufferHt)/24)

    var b_version=navigator.appVersion;
    if(b_version.search(“MSIE 7.0”) != -1){
    ListTable.dataPageSize = PageSize
    }
    else{
    try { ListTable.dataPageSize=PageSize } catch(err){}
    }
    }

  14. Stan says:

    Yeah, that would be cool. Shoot it over to ssvetec@hotmail.com

    Thanks for that.

  15. Stan says:

    Does anyone know where I can source the required update files for Magic SD? Currently, my LAB is running: 8.00.1346 and I need to be the same as the production env. of: 8.00.1569

    Cheers

  16. Kevin says:

    I just installed the IE8 out of band patch from Microsoft today MS10-018. Magic works for us now.

  17. Striff says:

    THanks,
    Can confirm patch works. Gives the same results as modifying commondetailstab.js..

    Whis for me has an issue sometimes:
    When in a incidentsometimes you have to click on another tab (CI’s, Services, attachments, work orders etc) then click back to Incident details to see the entries. in there.
    If not it looks blank..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: