我想在用户脚本中使用document.evaluate表达式,以便能够检测文档头中现有jQuery库的存在(或不存在),作为开发用于Firefox的用户脚本的jQuery包装器的一部分和chrome,并且不会与其他库冲突(我希望做的是让它在任何其他脚本标记之前插入库和任何jquery代码,如果有必要,让它们在没有冲突模式下运行。)
长话短说,这句话似乎不起作用:
jqueryscript = document.evaluate("//*script[contains(@src, 'jquery')]", document.head, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
当我尝试测试jqueryscript.snapshotLength> 0,脚本失败。我在xpath非常新,所以请帮助我理解这一点。
答案 0 :(得分:1)
jqueryscript = document.evaluate ("//script[contains (@src, 'jquery')]", document.head, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
应该有用。
但请注意,在某些网站(如SO)上会产生错误的点击 EG:
<script ... src="http://engine2.adzerk.net/z/8277/adzerk2_2_17_45?keywords=jquery,firefox,google-chrome,xpath,greasemonkey,x-user-registered,x-5000plus-rep">
所以,
jqueryscript = document.evaluate ("//script[contains (@src, '/jquery')]", document.head, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
可能会更好。