1

我的 Chrome 扩展程序有问题,完全是清单文件。

{
  "manifest_version": 2,

  "permissions": [
     "file://*/*",
     "activeTab",
     "http://www.pdfzorro.com/"
   ],

  "name": "PDFzorro - PDF Editor",
  "version": "0.0.0.11",
  "short_name": "PDF-Dateien bearbeiten - edit PDF files",
  "description": "edit PDF files online, direct from GoogleDrive",
  "icons": { "16": "logo16.png",
          "128": "logo.png" },  

  "container": ["GOOGLE_DRIVE"],
  "api_console_project_id": "000000000000",

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

在 Dev-Mod 中,扩展在 Chrome 中工作。但我无法将压缩后的扩展上传到 Chrome 网上应用店。

错误:“权限”中不允许架构“file://”

我也试过:

file:///
file://
file:///*
file://*/*

..但没有任何效果。

应用程序工作和上传工作的唯一方法是添加<all_urls>权限。但由于安装应用程序时出现警告,我不希望这样做。

4

1 回答 1

0

您可以声明"<all_urls>"可选权限并在运行时请求来源。

只需将其置于可选权限中即可显示用户无论如何都需要勾选的“允许访问文件:URL”复选框。

您可以找出该标志的状态,因为除非设置原点,否则原点将被视为无效。所以:

chrome.permissions.contains(
  {origins: ["file://*"]},
  function(granted){
    if(chrome.runtime.lastError) {
      // The flag is not set
      // You need to explain it to the user and then show the page
      // You can open the page scrolled where you need it with the following:
      // chrome.tabs.create({ url: "chrome://extensions?id=" + chrome.runtime.id });
      // Note that just a link won't work
    } else if(!granted) {
      // The flag is set, but the permissions are not yet granted
      // You need to call the next snippet FROM A USER GESTURE (e.g. click)
    } else {
      // Everything is peachy, you have the permissions
    }
  }
);

勾选该标志后,您可以从用户手势调用以下命令以获取权限:

chrome.permissions.request(
  {origins: ["file://*"]},
  function(granted) {
    if(!granted) {
      // Should never happen (see below)
    } else {
      // Everything is peachy now
    }
  }
);

只要设置了标志,这将始终成功而无需用户对话,但必须从用户手势调用一次。权限授予在整个安装生命周期中持续存在。

这在安装时不会产生警告,CWS应该会通过。

于 2015-05-27T14:31:50.067 回答