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 BackCompattypeof some_html_element.style.filter
is stringtypeof some_html_element.style.MsFilter
is undefinedHowever, the following test gave different results:
typeof some_html_element.filters
is object in unbroken gadgetstypeof some_html_element.filters
is unknown in broken gadgetsA 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:
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).
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:
if (!/MSIE (5\.5|6|7|8)/.test(navigator.userAgent) || typeof filters == 'unknown') return;
which can probably help you in general too.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.