google-chrome-extension - 在 Chrome 扩展内容脚本中使用 Dart 不运行?

标签 google-chrome-extension dart

我正在尝试使用 Dart 编写 Chrome 扩展程序。到目前为止,除了内容脚本之外,一切都很顺利——内容脚本 dart 文件中的“main”函数似乎没有运行。

更具体地说,首先不能使用 Dartium,因为在 manifest 中的“js”规则中提供 dart 文件会导致 Dartium 提示;我接下来尝试编译 dart 文件(使用 csp:true)然后使 list 直接包含编译后的 js 文件 --- 然后我被卡住了,似乎无论我尝试什么,(编译的)“main”功能只是不运行。

有什么建议么?

更新:

list 文件:

{
  "manifest_version": 2,
  "name": "Assistant",
  "description": "Assists you with various tasks.",
  "version": "1.0",
  "minimum_chrome_version": "26.0",
  "permissions": ["<all_urls>", "storage"],

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": [
        "packages/browser/dart.js",
        "dart_content_script.dart.js"
      ],
      "run_at": "document_start",
      "all_frames": false
    }
  ],

  "browser_action": {
    "default_popup": "popup.html",
    "default_icon": "bulb.png"
  },

  "background": {
    "page": "background.html"
  }
}

内容脚本 dart 文件:
void main() {
  print('main done');
}

pubspec.yaml:

name: AssistentExtension

dependencies:
  browser: any
  chrome: any

dev_dependencies:
  unittest: '>=0.10.0'

transformers:
- $dart2js:
    csp: true

在 Chrome 开发者控制台中,我可以找到字符串“main done”,表示“main”函数确实包含在编译的 js 中,但没有打印任何内容,表示它没有运行。

最佳答案

我遇到了和你一样的问题。当时我查看了控制台日志 ,一个日志说 chrome 包丢失(但我不知道是什么原因造成的),所以我手动将它添加回构建文件夹,然后它工作了,所以我可以看到我的日志写在 main() 中。

当我运行 test_ext 附带 official chrome pub ,我在控制台日志中收到一条不同的错误消息,我再次解决了它,然后 test_ext sample 也运行良好。

因此,我的建议是查看控制台日志,它可能会有所帮助。您可以打开控制台右键单击 进行扩展扩展的弹出 UI 并选择'检查元素 ' 打开它。

关于google-chrome-extension - 在 Chrome 扩展内容脚本中使用 Dart 不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367475/

相关文章:

javascript - 如何使用 Chrome.downloads api 获取下载列表?

javascript - chrome.tabs.getCurrent() 或 tabs.query()

testing - Window defender 想要重置您的设置”-ChromeDriver 2.29 问题 :ChromeBrowser opening with a new tab

flutter - 如何在窗口小部件外部访问提供商?

google-chrome - 如何从扩展后台检测隐身模式

macos - 无论如何,是否可以使用 VIM 实时协作处理 Google 文档?

dart - 如何在 Flutter 中更改键盘上的文本输入操作按钮(返回/回车键)?

dart - Dart lang:您如何通过浏览器功能测试文件上传和文件读取API?

dart - 编译为JavaScript时不加载Polymer.dart

flutter - 获取列表中最受欢迎的值