【问题标题】:IE < 9 showing displaying "Member not found"IE < 9 显示“未找到成员”
【发布时间】:2011-11-03 10:07:26
【问题描述】:

我看到“SCRIPT3:找不到成员”。 IE Member not found IE error (IE 6, 7, 8, 9)),它似乎出现在 setTimeout 内部的 .hover() 部分。

我按照中的步骤操作,但仍然遇到同样的问题。如有任何帮助,我将不胜感激。

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

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

【问题讨论】:

  • 您可以添加您的编辑作为答案吗?
  • 在 jquery-1.6.2.js 文件的第 3172 行,我注释掉了 `e.cancelBubble = true; ` 并插入 ` if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; } ` .也就是说,对原始jquery文件稍作修改。
  • 对不起。想要添加代码:注释掉 - e.cancelBubble = true; 并插入 - if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; }

标签: javascript jquery internet-explorer-8 internet-explorer-7


【解决方案1】:

对于其他不想修改 jQuery 源代码的人......(为了上帝的爱,不要这样做)

这发生在 ie

以下代码适用于当您依赖 jQuery 处理事件处理程序返回值 (false) 时的某个位置。如果您想在此处取消事件,请参阅 cmets - 将对 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);

【讨论】:

  • 不错。我发现在我的情况下修改e.originalEvent.originalEvent 破坏了stopPropagation() 调用(没有崩溃但也没有传播停止),这首先是崩溃的根源。我最终通过将调用包装在 try/catchall 中解决了这个问题:try { event.stopPropagation(); } catch (e) {}
  • 这是调用 event.stopPropagation() 的一个很好的解决方法,但如果您返回 false 并让 jQuery 自行停止,则无济于事。
【解决方案2】:

经过一段时间的搜索,我似乎受到了 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

【讨论】:

猜你喜欢
  • 2011-04-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2012-03-06
相关资源
最近更新 更多