5

在用户脚本中使用querySelector() vs jQuery的$()有什么好处吗?我希望脚本能够在支持用户脚本的所有主流浏览器中工作,所以我特别感兴趣的是跨浏览器兼容性。

我开始怀疑这一点,因为我注意到honestbleeps'出色的reddit的增强套件包括jQuery的作为依赖,但大多坚持querySelector()选择要素等基本JavaScript方法用于DOM操作。

这只是一个味道问题,还是有理由让jQuery的使用降到最低?

+2

我不会在“Reddit增强套件”中阅读太多内容。在任何大型或不断发展的项目中,您都会发现多种(大多数)工作的旧式代码以及更新或更好的实践。 (尽管如此,新版本并不一定更好。)很少有开发人员或团队会重构旧的工作代码,只是为了使所有内容保持一致。 – 2013-02-09 01:42:57

回答

3

使用querySelector()querySelectorAll()的唯一原因是您没有使用jQuery。与先进的CSS选择器相比,jQuery选择器功能更强大,更可能在浏览器中始终如一地执行。

这就是说,包括jQuery可以不必要地复杂简单的脚本。它需要脚本注入在大多数浏览器上 - 这会破坏沙箱,产生潜在的冲突,并使您的脚本依赖于第三方服务器。
Here is a cross-browser way to include jQuery that minimizes conflicts. And, if the browser supports local jQuery copies, it doesn't require a third-party server to always be up/fast.

如果脚本很简单,你能避免jQuery的不费力,使用querySelector()。你的脚本可以在所有脚本浏览器上工作,99%以上的时间。

如果脚本无论如何加载jQuery,请使用jQuery选择器来获得最大的功能和一致性。

请注意,除了最基本的DOM操作外,jQuery通常都是值得的。对于Firefox + Greasemonkey或Chrome + Tampermonkey,如果使用,则几乎没有使用jQuery的缺点。

+0

另外,无论何时您提供有效的CSS选择器,jQuery都默认为'querySelectorAll()'。 – BoltClock 2013-02-09 06:19:57

1

querySelectoris not supported in some browser versions,而jQuery的$()是。

+2

不适用'greasemonkey'和'userscripts'问题。所有最近的脚本浏览器版本都支持'querySelector()'。 (至少在标准供应商中) – 2013-02-09 00:45:42

相关问题