Search code examples
internet-explorer-9windows-desktop-gadgets

Filters collection unavailable on *some* versions of IE9


I've created a Windows Sidebar Gadget which uses the filters collection on HTMLElements, so that I can show transition effects (between photos... the gadget is a photo viewer).

With the latest version of IE9 however, I've discovered that in some cases, the filters collection is not available; and throws an error when access to it is attempted.

Originally, I put this down to some weird problem with IE9 being in Standards mode instead of Quirks by default (as in IE9, Microsoft retired the style.filter property in favour of style.opacity in an attempt to be standards compliant with opacity), however after further debugging, this isn't the case.

In all the following tests, the results came back the same for both gadgets that were throwing errors, and gadgets that weren't:

  • document.documentMode is 5
  • document.compatMode is BackCompat
  • typeof some_html_element.style.filter is string
  • typeof some_html_element.style.MsFilter is undefined

However, the following test gave different results:

  • typeof some_html_element.filters is object in unbroken gadgets
  • typeof some_html_element.filters is unknown in broken gadgets

A selection of useragent strings of broken gadgets are below:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; BRI/1; .NET CLR 1.1.4322; .NET4.0C)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MATP; InfoPath.2; FunWebProducts; .NET4.0C; yie9) 

A selection of useragent strings of working gadgets are below:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; yie9)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MALN; InfoPath.2; .NET4.0C)

Unfortunately, the problem is baffling me so much, I can't even reproduce it on my development machine; so I haven't really got much more information to go on.

Anyone experienced anything like this before/ have any idea what could be causing it?

To ensure I'm making my question(s) clear:

  1. Has anyone experienced this before/ have any idea what could be causing it?
  2. Does anyone know any other variables I could report to the server to try diagnose the cause of the problem futher?
  3. Bounty Edit: Can anyone download the gadget, reproduce the problem, and post detailed information on their Windows Environment (OS version, updates installed), and their IE configuration (version, plugins installed)?

    If the gadget is broken, upon clicking any status icon (loading spinner, error icon) displayed in the top left of the gadget whilst hovering over it, you'll see an error saying "Several problems (most noticeably disabled transitions) were introduced when installing Internet Explorer 9. We are actively working on a fix.". You'll notice there aren't any transition effects between photo changes (and several users have reported the title/author/play back control bar has no opacity either).

N.B: Needless to say, cross compatability is not an issue for me. I need the gadget to run in IE7, 8 and 9 and that's it (Windows Sidebar uses a mangled version of the copy of IE installed behind the scenes).


Solution

  • I downloaded the gadget and see no problems. I see the transitions (dissolve) and control bar transparency is also there.

    My user agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

    I'm running Win7 x64 SP1, IE9 32bit. I do not have many addons, just a few including Shockwave, Kaspersky AV Broswer helpers, MS Office cache handler, WIndows Live Sign In helper.

    Based on the broken user agents, the problem seems to be in some variants of IE7. Also if you look at the last one, there is this FunWebProducts in it which tells me that there are other components on the system (addons/activex maybe) which could be interfering.

    Not sure but I would suspect windows updates to be a culprit too.

    It is hard to say exactly what is causing this issue, but here's few pointers:

    • IE 7, 8 have problems displaying some png images correctly (alpha channel issues mainly). A workaround to handle this gracefully is this check: if (!/MSIE (5\.5|6|7|8)/.test(navigator.userAgent) || typeof filters == 'unknown') return; which can probably help you in general too.
    • Does it break on specific images on the broken systems?
    • Does it break when IE has no addons?
    • Is anything being logged in Event Logs?
    • Does the broken system has latest updates?
    • If possible, use AppSight's Blackbox on one the broken systems. This will give you tons of info as to what is going on in the system. When everything else fails, this program is godsend (from my own personal experience).

    Except for the last bullet, everything else are vague pointers. If you can, use Blackbox. Pretty sure you'll be able to find what's causing the issue.

    It definitely looks like the code is not the culprit, but a combination of factors/components on those systems that are causing this.