2011-11-03 60 views
11

我看到“SCRIPT3:会员找不到”。 IE <中的错误9。查看各个位置(例如,Member not found IE error (IE 6, 7, 8, 9)),似乎发生在.hover()部分内的setTimeout处。IE <9显示显示“找不到会员”

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

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

我已经把整个代码为:http://jsfiddle.net/f4tZQ/

+0

您可以将您的编辑添加为答案吗? – 2011-11-03 11:10:40

+0

在jquery-1.6.2.js文件的第3172行中,我注释了'e.cancelBubble = true; '并插入 'if(typeof e.cancelBubble!=='unknown'){e.cancelBubble = true; ''。换句话说,对原始jquery文件进行一些修改。 – maan81

+0

对不起。想添加代码:注释掉--e.cancelBubble = true;'并插入 - if(typeof e.cancelBubble!=='unknown'){e.cancelBubble = true; }' – maan81

回答

6

之后的某个搜索,我似乎被jQuery的错误的影响。在“comment:4”之后,更改jQuery-1.6.2.js文件,第3172行解决了这个问题。

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

不要问为什么,但它的工作...出于某种原因的jQuery或IE浏览器返回的“未定义”代替 “未知”在这里。

索取:

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

+0

请参阅我的问题以获取有关“IE中未知”的更多信息:http://stackoverflow.com/questions/10982739/typeof-returning-unknown-in-ie –

+3

编辑JQuery是一个坏主意。 – Nicknameless

8

对于其他人谁到这里不想修改jQuery的源谁...(对上帝的爱不这样做)

发生自定义事件时发生在ie <中。如果您在事件发生之前有权访问事件,例如崩溃,则沿着原始事件链向下并设置最后一个= {};

下面的代码适用于当您依赖jQuery来处理事件处理程序返回值(false)某处的链。如果您想在此取消活动,请参阅评论 - 在try/catch块中打电话给e.stopPropagation()

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); 
+2

不错。我发现在我的情况下,修改'e.originalEvent.originalEvent'打破了'stopPropagation()'调用(没有崩溃,但也没有传播停止),这是首先崩溃的根源。我最终通过在try/catchall中包装调用来解决问题:'try {event.stopPropagation(); } catch(e){} – Simon

+0

这是调用event.stopPropagation()的一个很好的解决方法,但是如果您返回false并让jQuery自行停止,则不起作用。 – scaryman