Ais*_*ina 7 javascript jquery internet-explorer sizzle
出于某种原因,我在jquery.js(版本1.4.3,非压缩版本)的第3156行的Internet Explorer 8中收到以下Javascript错误:Object doesn't support this property or method.Firefox和谷歌浏览器中没有错误.
这是错误发生的行:
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
Run Code Online (Sandbox Code Playgroud)
Investigation(console.log(Expr.leftMatch[type]))产生以下有趣结果:在谷歌浏览器中输出
/(^(?:.|\r|\n)*?):((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\3\))?(?![^\[]*\])(?![^\(]*\))/
Run Code Online (Sandbox Code Playgroud)
但是在Internet Explorer中,这是输出:
function() {
var p = this;
do p = p.previousSibling;
while (p && p.nodeType != 1);
return p;
}
Run Code Online (Sandbox Code Playgroud)
其中exec无法调用(未定义).jquery.js中不存在引用的函数.有没有人知道为什么会发生这种情况,或者我能做些什么来解决它?
遗憾的是,我还没有能够创建一个简单的脚本来重现这个问题,虽然我确实找到了这个有同样问题的帖子,但它没有提供解决方案(最后一篇文章建议该页面应该运行标准模式,但我的已经是).
事实证明,经过几个痛苦的小时后,我成功地自己解决了这个问题.如果您已Object.prototype.previousObject在其他地方定义,则Sizzle选择器引擎会以此意外方式(并且仅在Internet Explorer中)中断.
删除该声明,或重命名previousObject为其他东西可以解决问题.
有趣的是,我甚至把那些代码放在那里(Object.prototype.previousObject = [the function in my question]),但我没有认出代码.
那是另一天充满了发展潜力的浪费.
| 归档时间: |
|
| 查看次数: |
34007 次 |
| 最近记录: |