IE9:对象不支持属性“是”

时间:2013-11-15 18:21:54

标签: javascript jquery internet-explorer

我正在尝试编写一个小jQuery插件,但我(当然)Internet Explorer 9存在问题。

这是代码:

$.fn.mytest = $.mytest = function() {
        if ( !! this && this.call && this.apply) {
            self = $("a");
        } else {
            self = this;
        }

    if(self.is(".stupid")) { 
        alert("yes, it's stupid");
    } else{
        alert("no, maybe you are");
    }
    return this;
};

$.mytest();
$("a").mytest();

小提琴:
http://jsfiddle.net/Abb6a/1/

在谷歌浏览器上一切正常,在IE9中它说 the object does not supports the property or the method "is"

看起来IE9不喜欢我的插件的独立版本,并且对传递的参数this有麻烦。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

selfwindow对象的属性,在某些版本的IE中它是只读的。要解决此问题,只需重命名您的变量即可。或者,如果仅用于特定功能范围,则可以使用var声明它。

看起来window的所有属性都引用了一个窗口对象,例如topparentframes*selfframeElement* ...在IE中是只读的。虽然可以在IE> 9中覆盖self

* = frames是一个HTMLCollection,frameElement指的是HTML(I)frameElement,这两个实际上都包含窗口对象。