问题 IE


我看到“SCRIPT3:未找到会员”。 IE中的错误<9。看各个地方,(例如, 成员未找到IE错误(IE 6,7,8,9))它似乎发生在 setTimeout 内 .hover() 一部分。

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

可能它也可能发生在内部的地方 change() FN。

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


7527
2017-11-03 10:07


起源

你可以添加你的编辑作为答案吗?
在jquery-1.6.2.js文件第3172行中,我注释掉了`e.cancelBubble = true; `并插入`if(typeof e.cancelBubble!=='unknown'){e.cancelBubble = true; }。换句话说,稍微修改原始jquery文件。 - maan81
抱歉。想添加代码:注释掉 - e.cancelBubble = true; 并插入 - if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; } - maan81


答案:


对于那些不想修改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);

8
2018-04-06 23:39



尼斯。我发现修改 e.originalEvent.originalEvent 打破了 stopPropagation() 在我的情况下调用(没有崩溃但也没有传播停止),这首先是崩溃的根源。我通过在try / catchall中包装调用来解决问题: try { event.stopPropagation(); } catch (e) {} - Simon
这是调用event.stopPropagation()的一个很好的解决方法,但是如果你返回false并让jQuery自行停止,则没有用。 - scaryman


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

if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; } 

不要问为什么,但它工作...由于某种原因jQuery或IE返回   '未知'在这里,而不是'未定义'。

从...获取 :

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


6
2018-03-15 04:00



有关IE中“未知”的更多信息,请参阅我的问题: stackoverflow.com/questions/10982739/... - Brett Postin
编辑JQuery是个坏主意。 - Ammi J Embry