简单模态,jQuery 1.8.0和IE9

简单模态失败,jQuery 1.8.0和IE9出错:

SCRIPT438:对象不支持属性或方法’removeExpression’

以下小提琴演示( 记得用IE9运行

http://jsfiddle.net/ericjohannsen/ZVEWa/1/

将jQuery切换到1.7.2会导致错误消失。

有办法解决这个问题吗?

可能相关 (OP说问题是jQuery 1.7.1和iframe)

SimpleModal在IE 9中不起作用(在iframe内部)

不相关 (jQuery 1.5问题)

IE9中简单模态的问题

似乎可以通过将$ .boxModel更改为$ .support.boxModel来解决此问题。 您可以访问http://github.com/ericmmartin/simplemodal获取更新版本。

我将尝试使用min版本获得完整打包的版本。

[edit] SimpleModal 1.4.3已经发布 ,应该可以解决这个问题

只是提供一个更新的答案(截至2013年8月2日),因为我在找到同样的错误时偶然发现了这篇文章…

正如salgiza在评论中指出的那样,jQuery 1.10中的一个变化导致了对$.support.boxModel支持,这是最新版本的Simple Modal使用的。

若要解决此问题,您必须更改Simple Modal源代码中的以下行:

  // (Line 239) $.support.boxModel is undefined if checked earlier //browser.ieQuirks = browser.msie && !$.support.boxModel; browser.ieQuirks = browser.msie && (document.compatMode === "BackCompat"); 

有与上面提到的相同的错误’对象不支持属性或方法’removeExpression”。 除了IE之外,所有浏览器中都会弹出模态窗口。 (使用文件jquery.simplemodal.js的非缩小版本1.4.3)

通过在所有动态属性周围放置try {} catch (e) {}来修复它。

例如

 try { s.removeExpression('top'); } catch (e) { //The support for dynamic properties has been removed in Internet Explorer 9 } 

模态窗口现在显示在所有浏览器中。

“表达式”的function检测可以解决问题,请查看我的修补程序:

https://github.com/ericmmartin/simplemodal/pull/34 https://github.com/redaxmedia/simplemodal/blob/master/src/jquery.simplemodal.js

在另一个答案中建议的更新没有解决问题。 该错误是由于IE9中没有removeExpressionsetExpression这一事实。 我通过注释掉任何使用任何表达式的东西来解决我的网站上的问题(我不关心IE6-7的兼容性)。