Firefox addon 如何在firefox中查看或调试chrome内容脚本(webextensions)

Firefox addon 如何在firefox中查看或调试chrome内容脚本(webextensions),firefox-addon,content-script,firefox-addon-webextensions,Firefox Addon,Content Script,Firefox Addon Webextensions,尝试将一个正常工作的chrome扩展移植到Firefox Nightly 46.0a1,并提出一个简单的问题!如何让内容脚本执行或查看它 当后台脚本执行且弹出框可见时,除内容脚本seam之外的所有内容都将正常运行。我能够调试这部分代码 但是内容脚本不会以任何方式运行 据我所知,它应该是正常页面javascript环境的一部分,并且在调试器中可见,但事实并非如此。无法在任何地方看到任何错误消息等 可能错误地使用了一些不受支持的API,但奇怪的是,我没有收到任何警告,也看不到任何东西 有关于如何进行

尝试将一个正常工作的chrome扩展移植到Firefox Nightly 46.0a1,并提出一个简单的问题!如何让内容脚本执行或查看它

当后台脚本执行且弹出框可见时,除内容脚本seam之外的所有内容都将正常运行。我能够调试这部分代码

但是内容脚本不会以任何方式运行

据我所知,它应该是正常页面javascript环境的一部分,并且在调试器中可见,但事实并非如此。无法在任何地方看到任何错误消息等

可能错误地使用了一些不受支持的API,但奇怪的是,我没有收到任何警告,也看不到任何东西

有关于如何进行的建议吗

清单文件如下:

{
  "name": "Bla Bla",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "A description",
  "homepage_url": "https://aaa.org",
  "icons": 
  {
    "16": "icons/lock_red16.png",
    "48": "icons/lock_red48.png",
    "128": "icons/lock_red128.png"
  },
  "default_locale": "en",
  "background": 
  {
    "scripts": 
    [      
      "js/lib/jserror/jserror.js",
      "js/lib/lang/languagedb.js",

      "js/lib/lz77.js",
      "js/lib/pcrypt.js",
      "js/lib/pcryptapi.js",

      "js/lib/forge.bundle.js",
      "js/lib/elliptic.js",

      "js/lib/srp6a/biginteger.js",
      "js/lib/srp6a/isaac.js",
      "js/lib/srp6a/random.js",
      "js/lib/srp6a/sha256.js",
      "js/lib/srp6a/thinbus-srp6client.js",
      "js/lib/srp6a/thinbus-srp-config.js", 
      "js/lib/srp6a/thinbus-srp6a-config-sha256.js",

      "js/pcrypt_shared.js",      
      "js/pcrypt_extension.js",

      "src/bg/background.js"
    ],
    "persistent": true
  },
  "browser_action": 
  {
    "default_icon": 
    {
      "16": "icons/lock_red16.png",
      "48": "icons/lock_red48.png",
      "128": "icons/lock_red128.png"    
    },
    "default_title": "Password Crypt",
    "default_popup": "src/browser_action/popup.html"
  },
  "permissions": 
  [
    "clipboardWrite",
    "storage"
  ],
  "content_scripts": 
  [
    {
      "matches": 
      [
        "http://*/*",
        "https://*/*"
      ],
      "js": 
      [
        "js/pcrypt_extension.js",

        "src/inject/inject.js"
      ]
    }
  ],
  "externally_connectable":
  {
    "matches": 
    [
        "https://*.aaa.dk/*",
        "https://*.aaa.org/*"
    ]
  },
  "web_accessible_resources": 
  [
    "icons/*.png"
  ],
  "applications": 
  {
    "gecko": 
    {
      "id": "benny@aaa.dk",
      "strict_min_version": "40.0.0",
      "strict_max_version": "50.*",
      "update_url": "https://aaa.org/addon"
    }
  }
}
据我所知,它应该是正常页面javascript环境的一部分,并且在调试器中可见,但事实并非如此

不,他们不是。它们在与页面环境分离的特权稍高的上下文中运行,因此可以访问webextension API


如果您已关闭E10,则可以使用。如果启用,则需要使用浏览器内容工具箱。您也可以尝试
about:debugging
,尽管我不确定这是否适用于webextensions。

了解调试WebExt所需的一切,包括内容脚本。

您建议的一切都可以,但我在哪里可以找到我的内容文件?只有背景文件和弹出文件!假设您谈论的是inject.js,我想它只会显示在调试器打开后应用到页面的情况。在浏览器内容工具箱中发现我的文件似乎由于以下错误而未运行:。例如,我使用chrome.runtime.sendMessage开始从内容脚本到后台脚本。在Firefox45中(不是每晚),我可以在浏览器工具箱中找到我的内容脚本。我必须在全局设置中启用远程调试和浏览器工具箱选项(请参阅答案中的链接)。当您浏览运行内容脚本的页面时,要获取浏览器工具箱,请点击菜单按钮图标(三个水平条),然后点击“开发者”(扳手),然后点击“浏览器工具箱”。此外,CTRL-Shift-Alt-i将打开工具箱。我发现使用“debugger;”语句非常有用,可以避免挖掘百万个核心脚本,并使工具箱动态中断。