【问题标题】:Using Dart for Chrome Extensions将 Dart 用于 Chrome 扩展
【发布时间】:2014-04-04 23:31:46
【问题描述】:

我正在尝试使用 Dart 创建一个 Chrome 扩展程序。

到目前为止,我无法让它在扩展程序中运行任何 javascript,尽管我可以进行 pub 构建并在浏览器中运行它。

我有以下 3 个文件:

Manifest.json:

{
  "manifest_version": 2,

  "name": "ecDownloader",
  "description": "-",
  "version": "0.1",

  "browser_action": {
    "default_title": "Click to disable extension",
    "default_icon": "images/icon.png"
  },

  "options_page" : "options.html"
}

options.html:

<html>
  <head>
    <meta charset="utf-8">
    <title>ecDownloader</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <div>
      <h1>Options</h1>
      <fieldset name="info">
        <legend>Login Information</legend>
        <label for="username">Username</label>
        <input type="text" name="username" id="username" size="20">
        <label for="password">Password</label>
        <input type="password" name="password" id="password" size="20">
        <button type="button">Save!</button>
      </fieldset>
      <span id="test"></span>
    </div>
    <script type="application/dart" src="options.dart"></script>
    <script src="packages/browser/dart.js"></script>
  </body>
</html>

options.dart:

import 'dart:html';

void main() {
  querySelector('#test').text = 'test';
}

【问题讨论】:

  • 问题是什么?
  • 顺其自然; “我在这里做错了什么?”或“我错过了什么?”。
  • 在 Chrome 中添加我的“项目”作为解压扩展后,我无法让它运行任何 javascript。即使我可以使用“在 Dartium 中运行”在 Dart 编辑器中运行我的项目,或者进行 pub 构建和“在浏览器中运行”。
  • 所以在您的问题中,您的意思是“虽然我不能**不能**做酒吧”而不是“虽然我可以做酒吧”?有任何错误信息吗?
  • 好的,现在我收到以下 2 条消息:“拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:” script-src 'self' chrome-extension-resource:"." “未捕获的 EvalError:拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:“script-src 'self' chrome-extension-resource:”。”跨度>

标签: google-chrome dart dart-pub


【解决方案1】:

Chrome 扩展程序需要使用符合 CSP 的脚本。符合 CSP 的脚本由 pub build 自动生成,扩展名为 dart.precompiled.js,但 HTML 文件默认引用不符合 CSP 的文件。

计划在 Dart2JS 转换器的配置选项中设置相应脚本文件的链接,但尚未实现。

Polymer 变压器还有一个选项csp: true,在使用 Polymer 时必须设置。

编辑

transformer was added to chrome.dart 会在 pub build 上自动执行此操作 - 即将推出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2014-10-27
    • 1970-01-01
    • 2018-07-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多