过滤器集合在*某些*版本的IE9上不可用

时间:2011-08-08 19:41:00

标签: internet-explorer-9 windows-desktop-gadgets

我创建了一个Windows Sidebar Gadget,它使用HTMLElements上的filters集合,以便我可以显示过渡效果(照片之间......小工具是照片查看器)。

使用最新版本的IE9,我发现在某些情况下,filters集合不可用;尝试访问时会抛出错误。

Originally,我把这归结为一个奇怪的问题,默认情况下IE9处于标准模式而不是Quirks(在IE9中,Microsoft退出了style.filter属性,转而支持style.opacity试图成为符合 opacity 的标准,但经过进一步调试后,情况并非如此。

在以下所有测试中,投放错误的小工具和非小工具的结果都相同:

  • document.documentMode 5
  • document.compatMode BackCompat
  • typeof some_html_element.style.filter字符串
  • typeof some_html_element.style.MsFilter 未定义

然而,以下测试给出了不同的结果:

  • typeof some_html_element.filters对象中是完整的小工具
  • typeof some_html_element.filters在已损坏的小工具中未知

以下是一系列有缺陷的小工具的使用者字符串:

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) 

以下是一系列有效的工作小工具:

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)

不幸的是,问题让我感到困惑,我甚至无法在我的开发机器上重现它;所以我还没有更多的信息可以继续下去。

任何人在遇到这样的事情之前经历过这样的事情之后会有什么经历?

为了确保我的问题清楚明确:

  1. 有没有人在此之前经历过这个/有什么可能导致它的原因?
  2. 有没有人知道我可以向服务器报告的任何其他变量,以便进一步诊断问题的原因吗?
  3. Bounty Edit :任何人都可以download小工具,重现问题,并在其Windows环境中发布详细信息(操作系统版本,更新)安装),和他们的IE配置(版本,插件安装)?

    如果小工具损坏,点击小工具左上方显示的任何状态图标(加载微调框,错误图标),同时将鼠标悬停在小工具上,您会看到错误说“几个问题(最明显禁用的转换)在安装Internet Explorer 9时引入了。我们正在积极致力于修复。“您会注意到照片更改之间没有任何过渡效果(并且有几个用户报告标题/作者/播放控制栏也没有不透明度。)

  4. N.B:不用说,交叉兼容性对我来说不是问题。我需要小工具在IE7,8和9中运行,而且就是(Windows边栏使用了幕后安装的IE副本的错误版本)。

2 个答案:

答案 0 :(得分:2)

我下载了小工具,看不出任何问题。我看到过渡(溶解)和控制栏透明度也存在。

我的用户代理:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

我正在运行Win7 x64 SP1,IE9 32位。我没有很多插件,只有少数包括Shockwave,卡巴斯基AV Broswer助手,MS Office缓存处理程序,WIndows Live Sign In助手。

基于破坏的用户代理,问题似乎出现在IE7的某些变体中。另外,如果你看一下最后一个,其中有FunWebProducts,它告诉我系统上还有其他组件(可能是addons / activex)可能会产生干扰。

不确定,但我怀疑Windows更新也是罪魁祸首。

很难确切地说是导致这个问题的原因,但这里有几点指示:

  • IE 7,8在正确显示某些png图像时存在问题(主要是alpha通道问题)。一个解决这个问题的解决方法就是检查:if (!/MSIE (5\.5|6|7|8)/.test(navigator.userAgent) || typeof filters == 'unknown') return;这可能对你有帮助。
  • 它在破损的系统上的特定图像上是否会中断?
  • IE没有插件时是否会中断?
  • 事件日志中是否记录了任何内容?
  • 损坏的系统是否有最新更新?
  • 如果可能,请在损坏的系统上使用AppSight's Blackbox。这将为您提供有关系统中发生的事情的大量信息。当其他一切都失败了,这个程序是天赐之物(根据我个人的经验)。

除了最后一颗子弹,其他一切都是模糊的指针。如果可以,请使用Blackbox。很确定你能找到导致问题的原因。

看起来代码不是罪魁祸首,而是导致这种情况的那些系统上的因素/组件的组合。

答案 1 :(得分:1)

当未指定doctype时,IE9以怪癖模式运行。但是,您可能会注意到IE9的更改行为不同,因为它们(最终)已得到修复。 IE9的行为与IE8的行为不同,IE7的行为与IE7不同,IE7的行为与其他更为现代的浏览器不同。

现在,某些“过滤器”属性已正确放入带有-ms前缀的供应商扩展中。