Javascript chrome扩展内容页的出色xpath

Javascript chrome扩展内容页的出色xpath,javascript,google-chrome,xpath,google-chrome-extension,wicked-good-xpath,Javascript,Google Chrome,Xpath,Google Chrome Extension,Wicked Good Xpath,如何使库可用于chrome扩展的内容页 我尝试将其放入manifest.json文件中,但wgxpath.install失败。在下面的示例中,alert.js启动它的alert,injected.js运行,并在source选项卡中可用。不过没有 "content_scripts": [ { "matches" : ["<all_urls>"], "js" : ["res/js/alert.js", "res/js/wgxpath.inst

如何使库可用于chrome扩展的内容页

我尝试将其放入manifest.json文件中,但wgxpath.install失败。在下面的示例中,alert.js启动它的alert,injected.js运行,并在source选项卡中可用。不过没有

  "content_scripts": [
    {
      "matches" : ["<all_urls>"],
      "js"      : ["res/js/alert.js", "res/js/wgxpath.install.js", "injected.js" ],
      "run_at"  : "document_end"
    }
  ],
感谢

根据的文档,wgxpath.install确保在窗口对象上定义XPAth求值函数

根据Chrome扩展文档,内容脚本存在于一个孤立的世界JS上下文中,就窗口对象属性而言:

每个孤立的世界都可以看到该对象的自己的版本。指定给对象会影响对象的独立副本

我自己还没有尝试过,但很可能您需要在网页的JS上下文中使用Wicket Good XPath,而不是内容脚本,因此您应该让内容脚本添加一个脚本元素,src指向wgxpath.install.JS文件,然后在网页的JS上下文中执行wgxpath.install。 此外,还需要将wgxpath.install.js文件添加到扩展名的

示例代码:

在manifest.json中:

在injected.js中:

根据您希望如何使用好的XPath,您可能需要向网页的JS上下文或设备中注入更多的代码,以实现两个JS上下文之间的通信


顺便说一句,这是一个很好的参考资料,介绍了使用Chrome扩展将代码或内容脚本插入网页的几种方法。

为什么不将其放入视图html正文中@拉胡斯:这是一个内容脚本。没有视图-它适用于所有URL。不知道,抱歉。我的猜测是,因为evaluate是一种安全违规行为,所以它不会被执行。回答很好,注射技术很好,谢谢。不幸的是,现在没有得到所有XPath的支持错误,但我怀疑这是一个单独的问题。
...
"content_scripts": [{
    ...
    "js": ["res/js/alert.js", "injected.js"],
    ...
}],
"web_accessible_resources": ["/res/js/wgxpath.install.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);