我创建了一个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)
不幸的是,问题让我感到困惑,我甚至无法在我的开发机器上重现它;所以我还没有更多的信息可以继续下去。
任何人在遇到这样的事情之前经历过这样的事情之后会有什么经历?
为了确保我的问题清楚明确:
Bounty Edit :任何人都可以download小工具,重现问题,并在其Windows环境中发布详细信息(操作系统版本,更新)安装),和他们的IE配置(版本,插件安装)?
如果小工具损坏,点击小工具左上方显示的任何状态图标(加载微调框,错误图标),同时将鼠标悬停在小工具上,您会看到错误说“几个问题(最明显禁用的转换)在安装Internet Explorer 9时引入了。我们正在积极致力于修复。“您会注意到照片更改之间没有任何过渡效果(并且有几个用户报告标题/作者/播放控制栏也没有不透明度。)
N.B:不用说,交叉兼容性对我来说不是问题。我需要小工具在IE7,8和9中运行,而且就是(Windows边栏使用了幕后安装的IE副本的错误版本)。
答案 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更新也是罪魁祸首。
很难确切地说是导致这个问题的原因,但这里有几点指示:
if (!/MSIE (5\.5|6|7|8)/.test(navigator.userAgent) || typeof filters == 'unknown') return;
这可能对你有帮助。除了最后一颗子弹,其他一切都是模糊的指针。如果可以,请使用Blackbox。很确定你能找到导致问题的原因。
看起来代码不是罪魁祸首,而是导致这种情况的那些系统上的因素/组件的组合。
答案 1 :(得分:1)
当未指定doctype时,IE9以怪癖模式运行。但是,您可能会注意到IE9的更改行为不同,因为它们(最终)已得到修复。 IE9的行为与IE8的行为不同,IE7的行为与IE7不同,IE7的行为与其他更为现代的浏览器不同。
现在,某些“过滤器”属性已正确放入带有-ms前缀的供应商扩展中。