3

我想在 Chrome 扩展程序中使用 AngularJS,但出现如下错误:

Error: SECURITY_ERR: DOM Exception 18
Error: An attempt was made to break through the security policy of the user agent.
    at new listConnection

清单.json:

 {
  "name": "Chrome auditor connection",
  "version": "1",
  "icons": { "48": "icone.png",
            "128": "icone.png" },
  "description": "Chrome-auditor-connection is an extension for Google Chrome browser. It ensures that nobody connects to your browser with your profile.",
  "background": {
    "scripts": [
      "chrome_ex_oauthsimple.js",
      "chrome_ex_oauth.js",
      "background.js"
    ]
  },
  "browser_action": {
    "default_title": "Chrome auditor connection",
    "default_icon": "icone.png",
    "default_popup": "index.html"
  },
  "permissions": [
    "storage"
  ],
  "web_accessible_resources": ["index.html"],
  "sandbox": {
     "pages": ["index.html","index.js","angular.min.js"]
  },
  "manifest_version": 2
}

index.js:

function listConnection( $scope) {      
    $scope.connections = JSON.parse(localStorage['connectionHistory']);
}

我认为 JSON.parse() 被 Chrome“内容安全策略”(CSP)阻止。

你有什么解决办法吗?

4

3 回答 3

4

您的 index.js 已按照 manifest.json 文件中的定义进行沙盒处理。
沙盒页面将无法访问扩展程序或应用程序 API”
因此它无法访问本地存储。
删除沙箱或使用类似https://github.com/jamesmortensen/chrome-sandbox-storageAPI的东西来处理沙箱页面。

于 2013-01-18T07:56:17.837 回答
4

有两个答案给你:

  1. 添加ng-csp到您的<html>标签,像这样<html ng-csp ng-app="AngularAppName">。看到这个答案
  2. 将此行添加到manifest.json文件

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self' "

于 2013-02-19T07:24:59.090 回答
0

代码中的问题

这些是我到目前为止看到的代码共享的一些问题!

  • index.html被用作default_popup,web_accessible_resources和 in sandbox Pages。它在功能上不正确,您要开发什么?
  • 为什么要放在angular.min.js沙盒位置?
  • index.js由 使用,如果是index.html,则无需明确列出。
  • 存储是每个域的对象,localstorage与沙盒和其他页面不同。
于 2013-01-19T10:50:51.773 回答