根据Wicked-Good-XPath的文档,wgxpath.install()
确保 XPAth 评估函数“......在窗口对象上定义”。.
根据 Chrome 扩展内容脚本的文档,内容脚本“生活”在一个孤立的世界(JS 上下文)中,并且就window
对象属性而言:
“每个孤立的世界都会看到自己的对象版本。分配给对象会影响您对该对象的独立副本。”
我自己没有尝试过,但很可能您需要在网页的 JS 上下文中使用 Wicket-Good-XPath(而不是内容脚本),因此您应该让内容脚本添加一个script
元素,并带有一个src
指向到wgxpath.install.js文件,然后wgxpath.install()
在网页的 JS 上下文中执行。
此外,您需要将wgxpath.install.js文件添加到扩展的web_accessible_resources
.
示例代码:
在manifest.json中:
...
"content_scripts": [{
...
"js": ["res/js/alert.js", "injected.js"],
...
}],
"web_accessible_resources": ["/res/js/wgxpath.install.js"]
在注入的.js中:
/* "Embed" `wgxpath.install.js` into the web-page */
var script = document.createElement("script");
script.type = "text/javascript";
script.src = chrome.extension.getURL("/res/js/wgxpath.install.js");
document.body.appendChild(script);
/* "Install" Wicked-Good-XPath into the web-pages context */
var script = document.createElement("script");
script.type = "text/javascript";
script.textContent = "wgxpath.install();";
document.body.appendChild(script);
/*Optionaly*/script.parentNode.removeChild(script);
根据您想要使用 Wicked-Good-XPath 的方式,您可能需要将更多代码注入网页的 JS 上下文(或设备一种在两个 JS 上下文之间进行通信的方式)。
顺便说一句,这个答案是您可以使用 Chrome 扩展程序将代码或内容脚本注入网页的几种方法的一个很好的参考。