简单模态,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中没有removeExpression
和setExpression
这一事实。 我通过注释掉任何使用任何表达式的东西来解决我的网站上的问题(我不关心IE6-7的兼容性)。