【问题标题】:Refuse to load JS in Dart拒绝在 Dart 中加载 JS
【发布时间】:2015-06-12 18:02:08
【问题描述】:

在我的 Dart 网页中,这个脚本:

<script src="https://test.net/test/test.js"></script>  

但是当您启动应用程序时,它给了我以下错误:

拒绝加载脚本“https://test.net/test/test.js”,因为它违反了以下内容安全策略指令:“default-src 'self' chrome-extension-resource:”。请注意,'script-src' 没有显式设置,因此 'default-src' 用作后备。

我还在清单中设置了内容安全策略,但没有任何结果:

"content_security_policy": "script-src 'self' https://test.net/test/"

有人知道怎么解决吗?

编辑

这个答案Loading external javascript in google chrome extension 在 Dart 中不起作用。

清单:

..."permissions":["tabs","https://test.net/test/"],
"content_security_policy": "script-src 'self' https://test.net/test/; object-src 'self'",
"content_scripts": [
{
  "js": ["https://test.net/test/test.js"]
}
]...

代码:

JsObject spark=context['spark'];
print(spark);
spark.callMethod('login',["{username: 'test@email.com', password: 'test'}"]);

结果:

异常:空对象没有方法“callMethod”。

Dart 不支持动态脚本注入:

Will there be a dynamic code injection for dart?

那么如何更改内容安全策略?

编辑 2

Chrome 在我安装应用程序时报告此错误:

【问题讨论】:

标签: javascript dart google-chrome-app content-security-policy


【解决方案1】:

在 Chrome 的打包应用程序中,您不能使用 "content_scripts""content_security_policy""tabs" 字段。

Dart 也不支持动态脚本注入。如此处所述:

Will there be a dynamic code injection for dart?

要使用JS代码必须保存在本地,导入到你的html代码中:

<script src="test.js"></script>

并使用库dart:js与代码js进行交互,如:

  test=context['test'];
  test.callMethod("login",["var1","var2",...,callback]);

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多