如何使用tabs.executeScript with react

时间:2016-11-07 20:54:47

标签: javascript reactjs google-chrome-extension

在我的一个组件中,当加载组件时,我希望我的扩展将脚本注入到运行扩展的当前选项卡中。该脚本基本上获取源代码并将其保存为字符串。

所以,在我的componentWillMount中,我尝试以下列方式注入脚本......

componentWillMount() {

    var result = '';
    chrome.tabs.executeScript(null, {
        file: './js/scripts/getPageSource.js'
     }, function() {
        // If you try and inject into an extensions page or the webstore/NTP you'll get an error
        if (chrome.runtime.lastError) {
            result = 'There was an error injecting script : \n' + chrome.runtime.lastError.message;

        }
    });
}

我的脚本./js/scripts/getPageSource.js的路径与我的反应应用程序正在使用的index.html文件相关。

我找不到错误文件,所以我改变了相对于组件的路径,但我仍然找不到文件。

我想也许这不是通过反应将脚本注入打开标签的正确方法,有没有更好的方法呢?

修改

这是我的manifest.json文件...

{
  "name": "Get pages source",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Get pages source from a popup",
  "browser_action": {
    "default_popup": "src/index.html"
  },
  "permissions": ["tabs", "<all_urls>"]
}

我的路径./js/scripts/getPageSource.js位于我上面引用的src文件夹中

1 个答案:

答案 0 :(得分:3)

使用与 manfest.json 文件相关的路径。

MDN states:

  

在Firefox中,相对URL是相对于当前页面URL解析的。在Chrome中,这些网址相对于附加组件的基本网址得到了解析

从您的 manifest.json ,您的file: 'src/js/scripts/getPageSource.js' 看起来应该是:

ProcessBuilder