简单的Modal,jQuery 1.8.0和IE9

时间:2012-08-20 22:43:53

标签: jquery simplemodal

Simple Modal因jQuery 1.8.0和IE9失败而出现错误:

  

SCRIPT438:Object不支持属性或方法'removeExpression'

以下小提示演示(记得与IE9一起运行

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

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

有办法解决这个问题吗?

可能相关(OP说问题出在jQuery 1.7.1& iframes上)

SimpleModal doesn't work in IE 9 (inside Iframe)

无关(jQuery 1.5问题)

Problems with simple modal in IE9

5 个答案:

答案 0 :(得分:44)

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

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

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

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

答案 1 :(得分:12)

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

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

[edit] SimpleModal 1.4.3已released,应解决此问题

答案 2 :(得分:1)

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

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

E.g。

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

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

答案 3 :(得分:1)

答案 4 :(得分:0)

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