【问题标题】:Opera throws a Security error on nodeType in jQuery 1.9.1Opera 在 jQuery 1.9.1 中的 nodeType 上引发安全错误
【发布时间】:2013-02-24 19:25:22
【问题描述】:

自从 jQuery 更新到 1.9.1 后,Opera 开始抛出与 nodeType 相关的错误。

我有以下代码:

$("p, td, div, span").children().andSelf().contents().each(function(){
    if (this.nodeType == 3)
    {
        ...
    }
});

Opera 抛出

未处理的错误:安全错误:试图读取受保护的变量

即使我删除了那个代码块,Opera 也会抛出同样的错误,这次是在 jquery-1.9.1.min.js 本身的一行:

return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : b.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), b.makeArray(e, this))

如果这有任何改变,我将从 http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js 加载 jQuery

更新:

相同的代码会在 Firefox 中导致类似的错误:

Permission denied to access property 'nodeType'

在 Chrome 中一切正常。

【问题讨论】:

  • 是什么节点?请提供一些上下文,否则我们需要关闭“无法重现”:-)
  • 我已经更新了问题中的 sn-p。
  • andSelf 自 v1.8 起已弃用,但我认为这不是原因。你能告诉我们应用了这些选择器的 DOM 吗?
  • 更改为 addBack,没有帮助。此外,如上所述,即使我完全删除了我的代码块,我也会收到错误消息。它只是在 jquery 内的另一个 nodeType 上引发相同的错误。
  • 是的,我预计这是 iframe 问题。 $("p, td, div, span").children().andSelf() 确实选择了 <iframe>,不是吗? .contents 尝试访问它。

标签: javascript jquery opera


【解决方案1】:

使用 $("p, td, div, span").children().addBack().not("iframe").contents() 来避免在 iframe 上应用 .contents()

顺便说一句,如果您只想使用nodeType == 3 获取内容节点,您可能宁愿只使用.children()

【讨论】:

  • 谢谢,这解决了问题。 .children() 不会也选择 p、td 等内的其他标签吗?
  • 是的,确实如此。这似乎是你的问题。
猜你喜欢
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 2018-02-13
  • 2012-03-29
  • 2014-04-04
  • 2012-03-17
  • 2013-01-31
相关资源
最近更新 更多