IE <9显示"未找到成员"

maa*_*n81 11 javascript jquery internet-explorer-8 internet-explorer-7

我看到"SCRIPT3:未找到会员".IE中的错误<9.查看各个位置(例如,成员未发现IE错误(IE 6,7,8,9)),它似乎发生在setTimeout内部.hover().

我按照中的步骤,但仍然遇到同样的问题.我会很乐意提供任何帮助.

可能它也可能发生在change()fn 内的地方.

我把整个代码放在:http://jsfiddle.net/f4tZQ/

sca*_*man 8

对于那些不想修改jQuery源的人来说......(为了上帝的爱,不要这样做)

这种情况发生在ie <9时,触发自定义事件.如果您在事件到达崩溃之前有权访问该事件,只需沿着原始事件链向下移动并设置最后一个事件= {};

下面的代码是为了让你依赖jQuery来处理事件处理程序返回值(false)在链的某个地方.如果要在此处取消事件,请参阅注释 - e.stopPropagation()在try/catch块中包含调用

var handleAndFire = function(e) {
 var ev = new $.Event('stack.overflow');

    //you may have to debug and manually inspect to see how 
    //deep the originalEvents go
    //or you could write your own function to traverse 
    //depth first and find it automatically, I'm lazy.
    e.originalEvent.originalEvent = {}; //fix for ie < 9
    ev.originalEvent = e;
    $(document).trigger(ev);    
}
$(document).click(handleAndFire);
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.我发现,修改`e.originalEvent.originalEvent`打破了我的情况下,这是摆在首位的碰撞源'stopPropagation()`调用(没有崩溃,也没有传播停止).我通过在try/catchall中包装调用来解决问题:`try {event.stopPropagation(); } catch(e){}` (2认同)

maa*_*n81 6

经过一段时间的搜索,我似乎受到jQuery bug的影响.在"comment:4"之后,更改了jQuery-1.6.2.js文件,第3172行解决了这个问题.

if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; } 
Run Code Online (Sandbox Code Playgroud)

不要问为什么,但它有效......出于某种原因,jQuery或IE在这里返回'unknown'而不是'undefined'.

从...获取 :

资料来源:http://bugs.jquery.com/ticket/10004

  • 编辑JQuery是个坏主意. (3认同)