从Web Store加载chrome扩展后,未启用NaCL标志

时间:2016-09-08 20:37:01

标签: google-chrome-extension google-nativeclient

我在iframe的某些网站上使用了chrome扩展程序(不是Chrome应用程序):

<iframe id="application" src="chrome-extension://<extension_id>/index.html"></iframe>

此扩展程序通过以下方式将Native Client对象添加到页面:

<embed name="nacl_module" id="nacl_module" src="/naclmodule.nmf" type="application/x-nacl">

将扩展程序上传到网上应用店后,它会在控制台中生成以下错误消息:&#34;只有从Chrome网上应用店安装的解压扩展程序和应用程序才能加载NaCl模块,而无需启用Native Client :flags。&#34;

当我将此扩展程序作为解包方式(从本地文件夹上传)上传到浏览器时,未发生错误。

我可以在Chrome设置中检查启用Native Client标记,并要求用户手动启用它。但这不是最好的方式。

也许我做错了,从Web Store安装的扩展也应该自动启用NaCL标志?

扩展的manifect.json文件是:

{
   "description": "<description>",
   "homepage_url": "<site_url>",
   "icons": {
      "128": "icon128.PNG"
   },
   "key": <key>,
   "manifest_version": 2,
   "minimum_chrome_version": "28",
   "name": "<name>",
   "offline_enabled": true,
   "permissions": [  "alarms", "storage", "unlimitedStorage" ],
   "platforms": [ {
      "nacl_arch": "x86-64",
      "sub_package_path": "_platform_specific/x86_64"
   }, {
      "nacl_arch": "x86-32",
      "sub_package_path": "_platform_specific/x86_32"
   } ],
   "update_url": "https://clients2.google.com/service/update2/crx",
   "version": "0.30",
   "web_accessible_resources": [ "/*" ]
}

更新 我在js代码中为iframe设置了sorce url。所以我尝试通过以下方式使用chrome.extension.getURL:

var frame = document.getElementById("frame_app");
frame.src = chrome.extension.getURL('index.html');

但是在运行时遇到错误:&#34;无法读取属性&#39; getURL&#39;未定义&#34;

然后我发布了有关content_script in chrome extensions的信息。所以我在清单文件中添加了以下内容:

"content_scripts": [{
    "matches": ["http://*.mysite.com/*", "https://*.mysite.com/*"],
    "js": ["contentscript.js"]
}],

您可以在下面找到contentscript.js文件:

console.log("CONTENT SCRIPT - test")
window.postMessage({ type: "FROM_SCRIPT", text: chrome.extension.getURL('index.html') }, "*")

并在js文件中处理此消息:

window.addEventListener("message", function(event) {
  // We only accept messages from ourselves
  if (event.source != window)
    return;

  if (event.data.type && (event.data.type == "FROM_SCRIPT")) {
   var frame = document.getElementById("frame_app");
     frame.src = "";        
        frame.src = event.data.text;
  }
}, false);

当我将此扩展程序从本地文件夹(解包扩展名)上传到chrome时,它可以正常工作。但是从Web Store上传和安装后仍然出现错误:&#34;只有从Chrome网上应用店安装的解压缩扩展程序和应用程序才能加载NaCl模块,而无需在about:flags中启用Native Client。&#34;

0 个答案:

没有答案
相关问题