在用户脚本中使用querySelector()vs jQuery的$()是否有任何优势?我希望该脚本适用于支持用户脚本的所有主流浏览器,因此我对跨浏览器兼容性特别感兴趣.
我开始怀疑这一点,因为我注意到,诚实优秀的Reddit Enhancement Suite包含jQuery作为依赖项,但大多数都坚持使用querySelector()来选择元素和DOM操作的其他基本JavaScript方法.
这只是一个品味问题,还是有理由将jQuery的使用保持在最低限度?
解决方法
使用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几乎没有任何缺点.