在用户脚本中,使用querySelector()和jQuery的$()有什么好处?

时间:2013-02-09 00:21:40

标签: jquery-selectors cross-browser css-selectors greasemonkey userscripts

在用户脚本中使用querySelector() vs jQuery的$()有什么好处吗?我希望该脚本适用于支持用户脚本的所有主流浏览器,因此我对跨浏览器兼容性特别感兴趣。

我开始怀疑这个因为我注意到 honestbleeps'优秀的 Reddit Enhancement Suite 包含jQuery作为依赖项,但大多数都坚持querySelector()来选择元素和其他用于DOM操作的基本JavaScript方法。

这只是一个品味问题,还是有理由将jQuery的使用保持在最低限度?

2 个答案:

答案 0 :(得分: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,如果@require it使用jQuery几乎没有任何缺点。

答案 1 :(得分:1)

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