为什么我可以在Chrome的JS控制台中使用jQuery语法,即使当前页面没有加载jQuery?

4
我认为在使用$来定位元素之前,必须先加载jQuery源码。但我曾经访问过一个网页,它甚至没有包含任何脚本,但我仍然可以在Javascript控制台中运行$('body'),并且Chrome成功地返回了其值。
为什么我没有收到“未定义的标记”这样的语法错误?谢谢。

它是否使用了MooTools?MooTools也使用$变量。 - Rory McCrossan
我无法在http://www.this-page-intentionally-left-blank.org/上重现这个问题。 - Shmiddty
1
也许这与您安装的插件有关? - Shmiddty
1
重复:[$ variable-in-chrome](https://dev59.com/Rmgt5IYBdhLWcg3w2A77) - jfrej
谢谢@jfrej,这很有道理。我尝试了jQuery('body'),得到了“未定义jQuery”的错误,现在非常清楚了。 - user898871
显示剩余2条评论
2个回答

10

以前,Chrome使用变量$作为document.getElementById的别名。

最近(可能在Chrome 23版本发布时),它已更改为document.querySelector的别名。

因此,您的代码等同于document.querySelector('body')


0

如@Shmiddty所评论的那样,很可能是由于您安装的插件...

您可以通过运行开发者工具来查找,选择“源代码”,查看“源”和“内容脚本”窗格 - 是否有类似jQuery的可疑内容?


1
不,这是一个开发工具的功能:https://dev59.com/Rmgt5IYBdhLWcg3w2A77 - jfrej
@jfrej Dev工具只是getElementById的别名,使用$('body')将不起作用,除非有一个id为body的元素。 - Florian Margaine
我的错。看起来它也加载了 body。很奇怪。 - Florian Margaine
哦,有趣!感谢澄清! - babelmonk
@jfrej 顺便说一句,这个最近已经被更改了。可能是Chrome 23的缘故。 - Florian Margaine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接