【问题标题】:In Firebug, $ == jQuery returns false, only sometimes在 Firebug 中,$ == jQuery 返回 false,只是有时
【发布时间】:2011-04-05 08:06:13
【问题描述】:

好的,我在 Firefox 中遇到了这个奇怪的问题。我在 Firebug 的控制台中输入

$ == jQuery

有时显示为真,有时显示为假。该文件只是一个空的 HTML 文档,其中包含一个脚本标记,包括 jQuery。我刷新页面,在控制台点击“运行”,再次,偶尔返回true,偶尔返回false。

在返回 false 的情况下,$.toString() 给出

function anonymous() {
    return window.console.notifyFirebug(arguments, "$", "firebugExecuteCommand");
}

现在奇怪的事情来了。当 $ == jQuery 使用 Firebug 的控制台给出 false 时,如果我转到地址栏并输入 javascript:alert($ == jQuery);,它会提示 true!

有人知道这里发生了什么吗?它(偶尔)搞砸了我的调试。

【问题讨论】:

  • 看起来 Firebug 使用 $ 符号来表示某些东西。只是一个想法——不确定这是否有效。
  • 可能是noconflict 或其他东西。如果你尝试在没有实际加载 jQuery 的情况下执行 $===jQuery,除了 false 之外,你还会得到一个引用错误
  • Firebug 的命令行将$ 绑定到a function that calls getElementById。不过,我想不出一个很好的实际理由来说明两者之间存在混淆,除非您在 jQuery 脚本完全加载之前以某种方式运行 sn-p(但这对我来说似乎不太可能)。跨度>
  • @Nick,你使用的是哪个版本的 Firebug?
  • 我总是先在控制台上输入var $ = jQuery;:P

标签: javascript jquery firebug


【解决方案1】:

firebug 定义了一个本地函数,将$ 分配给getElementById。我认为如果不升级到可能消除该问题的较新版本的 Firebug 或手动分配 $ = jQuery,您将无法解决此“错误”。

这可能是由于 jQuery 可能已经被缓存并且 Firebug $ 覆盖它,因为它触发太快,反之亦然。只是一些关于分配速度和缓存速度的奇怪错误。

【讨论】:

    【解决方案2】:

    也许 firebug 正在使用 $ 做某事,并且 jquery 和 firebug 之间存在竞争条件来设置该变量,您必须考虑到很多 javascript 库都使用该变量名,如果我没记错的话,原型是其中之一他们

    【讨论】:

      【解决方案3】:

      您应该使用 instanceof 而不是相等性检查。

      因为我们很可能 firebug 在本地范围内定义了 $。

      【讨论】:

        【解决方案4】:

        使用 $ 作为函数/变量符号可能还有很多其他的东西。 jQuery 只是其中之一。 Firebug 可能会覆盖 $。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-10
          • 1970-01-01
          • 2021-05-12
          • 2011-02-05
          • 2020-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多