$x()
不是网页或内容脚本的运行时环境的一部分。它是一个工具,是Chrome 开发者工具的命令行 API https://developers.google.com/chrome-developer-tools/docs/commandline-api.
要在内容脚本中使用 XPath,您需要以正常方式执行,DevTools 便捷的快捷方式不可用。
你的代码看起来像这样:
var jpgLinks = document.evaluate (
"//a[contains(@href,'.jpg')]",
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
var numLinks = jpgLinks.snapshotLength;
for (var J = 0; J < numLinks; ++J) {
var thisLink = jpgLinks.snapshotItem (J);
console.log ("Link ", J, " = ", thisLink);
}
——就是这样的事情$x()
是在幕后为你做的。
当你这样做时,考虑切换到CSS 选择器 http://www.w3.org/TR/CSS2/selector.html。那么相同的功能是:
var jpgLinks = document.querySelectorAll ("a[href$='.jpg']");
var numLinks = jpgLinks.length;
for (var J = 0; J < numLinks; ++J) {
var thisLink = jpgLinks[J];
console.log ("Link ", J, " = ", thisLink);
}
——这在我的书中更令人愉快。