IE jquery没有';在iframe中不允许show()的参数
我有这样的JS代码:IE jquery没有';在iframe中不允许show()的参数,jquery,internet-explorer,iframe,Jquery,Internet Explorer,Iframe,我有这样的JS代码: var li = $("li[attribute=foo]"); if (li.length) { li.show("slow"); // Fails } 我明白了: Error: Object doesn't support this property or method show() 同样适用于fadeIn()或scrollUp()。我还注意到closest()在另一个元素上失败。所有这些都在Firefox中工作 我怀疑这是因为所讨论的内容在iframe中(jq
var li = $("li[attribute=foo]");
if (li.length)
{
li.show("slow"); // Fails
}
我明白了:
Error: Object doesn't support this property or method
show()
同样适用于fadeIn()
或scrollUp()
。我还注意到closest()
在另一个元素上失败。所有这些都在Firefox中工作
我怀疑这是因为所讨论的内容在iframe中(jquery本身包含在外部页面中),但是iframe中的所有其他jquery都可以工作,并且从IE调试器的角度来看,li存在并且有一个带有参数的show方法
如果您有任何想法,知道哪里出了问题,或者如何解决问题,我们将不胜感激。根据上面的评论,这与jquery或iframe的版本无关,而是因为我的页面上有一些JS,格式如下:
Object.prototype.someCustomFunction = function( aObjects ) { ...}
值得分享我是如何解决这个问题的,以防它对任何人都有帮助。秘密在于获得jquery的完整版本,而不是经过模糊处理和压缩的版本,这样我就可以更容易地调试jquery中的错误
我发现在Sizzle.filter
中,jquery的迭代如下:
for ( var type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
...
}
}
关键是jquery希望找到ATTR
,子类
,类
等作为类型
。但它也会找到someCustomFunction
。而someCustomFunction
没有exec
,因此它就失效了
目前的黑客修复方法是引入一个空的exec
方法供jquery查找。e、 g
Object.prototype.someCustomFunction.exec = function( expr ) {}
从长远来看,我想将someCustomFunction
限制在实际需要的地方,而不仅仅是Object
根据上面的评论,这与jquery或iframe的版本无关,而是因为我的页面上有一些JS的表单:
Object.prototype.someCustomFunction = function( aObjects ) { ...}
值得分享我是如何解决这个问题的,以防它对任何人都有帮助。秘密在于获得jquery的完整版本,而不是经过模糊处理和压缩的版本,这样我就可以更容易地调试jquery中的错误
我发现在Sizzle.filter
中,jquery的迭代如下:
for ( var type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
...
}
}
关键是jquery希望找到ATTR
,子类
,类
等作为类型
。但它也会找到someCustomFunction
。而someCustomFunction
没有exec
,因此它就失效了
目前的黑客修复方法是引入一个空的exec
方法供jquery查找。e、 g
Object.prototype.someCustomFunction.exec = function( expr ) {}
从长远来看,我希望将someCustomFunction
限制在实际需要的地方,而不仅仅是Object
jQuery的哪个版本?(即,alert($().jquery);
在iFrame中运行时显示什么?)以及li.show(500)代码>工作?@Matt我正在使用jquery1.4.4、IE8和li.show(500)以同样的方式失败。Hrm。这在IE8中显示出类似的症状,但它从未真正触底。不要假设您已经将页面声明为UTF-8,但是没有声明字符集的内容类型头,是吗?你能不能把你的代码缩小到一个小例子来说明这个问题,这样我就可以试着重现它?我至少有IE8,也可以考虑升级(至少暂时)到最近版本的jQuery;1.6.2是当前的生产版本,我希望自从1.4.4发布以来,会有很多IE8/变通方法的修复。@Matt好主意。我现在将尝试将问题隔离到一个较小的完整失败示例中,如果我能够创建它,我将发布它。乍一看,iframe是一个骗局。jQuery的哪个版本?(即,alert($().jquery);
在iFrame中运行时显示什么?)以及li.show(500)代码>工作?@Matt我正在使用jquery1.4.4、IE8和li.show(500)以同样的方式失败。Hrm。这在IE8中显示出类似的症状,但它从未真正触底。不要假设您已经将页面声明为UTF-8,但是没有声明字符集的内容类型头,是吗?你能不能把你的代码缩小到一个小例子来说明这个问题,这样我就可以试着重现它?我至少有IE8,也可以考虑升级(至少暂时)到最近版本的jQuery;1.6.2是当前的生产版本,我希望自从1.4.4发布以来,会有很多IE8/变通方法的修复。@Matt好主意。我现在将尝试将问题隔离到一个较小的完整失败示例中,如果我能够创建它,我将发布它。乍一看,iframe是一条红鲱鱼。