Simple Modal, jQuery 1.8.0 and IE9

2019-03-09 11:23发布

问题:

Simple Modal fails with jQuery 1.8.0 and IE9 with the error:

SCRIPT438: Object doesn't support property or method 'removeExpression'

The following fiddle demonstrates (remember to run with IE9)

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

Switching jQuery to 1.7.2 causes the error to go away.

Is there a way to work around this?

Possibly Related (OP says the issue was with jQuery 1.7.1 & iframes)

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

Unrelated (jQuery 1.5 issue)

Problems with simple modal in IE9

回答1:

It appears that the issue can be resolved by changing $.boxModel to $.support.boxModel. You can grab an updated version at http://github.com/ericmmartin/simplemodal.

I will try and get a fully packaged release, with min version, out shortly.

[edit] SimpleModal 1.4.3 has been released and should resolve this issue



回答2:

Just to provide an updated answer (as of 8/2/2013), since I stumbled across this post while hunting down the very same bug...

As salgiza pointed out above in a comment, there's been a change in jQuery 1.10 that drops support for $.support.boxModel, which the latest version of Simple Modal uses.

To resolve this issue, you must change the following line in the Simple Modal source code:

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


回答3:

Had the same error as mentioned above 'Object doesn't support property or method 'removeExpression''. The modal window popped up in all browsers except IE. (Using non-minified version 1.4.3 of file jquery.simplemodal.js)

Fixed it by putting try {} catch (e) {} around all dynamic properties.

E.g.

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

The modal window shows in all browsers now.



回答4:

A feature detection for "Expression" does the trick, check out my hotfix:

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



回答5:

The update suggested in the other answer didn't fix the problem. The error is due to the fact that removeExpression and setExpression aren't available in IE9. I fixed the issue on my site by commenting out anything that used either expression (I don't care about IE6–7 compatibility).