我正在尝试编写一个小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
有麻烦。
我该如何解决这个问题?
答案 0 :(得分:4)
self
是window
对象的属性,在某些版本的IE中它是只读的。要解决此问题,只需重命名您的变量即可。或者,如果仅用于特定功能范围,则可以使用var
声明它。
看起来window
的所有属性都引用了一个窗口对象,例如top
,parent
,frames*
,self
,frameElement*
...在IE中是只读的。虽然可以在IE> 9中覆盖self
。
*
= frames
是一个HTMLCollection,frameElement
指的是HTML(I)frameElement
,这两个实际上都包含窗口对象。