javascript - Manifest_version = 2 且无内联 javascript 的 NaCl 中的模块加载进度事件

标签 javascript module google-chrome-extension embed google-nativeclient

我根据 this document 将 manifest_version 升级为“2” ,然后惊讶地看到 chrome 出现如下错误:

Refused to execute inline script because it violates the following Content Security Policy directive

虽然很清楚他们为什么要这样做,但我现在不清楚我应该如何管理模块加载 progress events .即使我将其升级到最新的 (dev) pepper 版本,文档仍然推荐使用内联脚本(这显然不起作用)。

看到这个版本翻转并使我的东西完全无效,我有点沮丧(在花了一个周末下午编写一个模块加载进度之后)。

所以,是的......这是为了更大的利益。我明白。但现在我必须有一个独立的 javascript 文件(具有自己的加载范例)并连接到 <embed/>元素及时正确捕捉事件?现在执行此操作的新方法和改进方法是什么?

谁能推荐一个可靠的替代方案来替代这个经过批准的样板文件?

最佳答案

根据documentation for NaCl progress events , 必须按如下方式添加事件监听器:

<div id="listener">
  <script type="text/javascript">
    document.getElementById('listener').addEventListener('load', function() {
        // Example
    }, true);
  </script>
  <embed name="nacl_module" ... type="application/x-nacl" />
</div>

如果内容安全策略 (see also) 禁止,则此操作。只有一种方法可以解决它:将脚本移动到外部文件:

<div id="listener">
  <script src="listener-load.js"></script>
  <embed name="nacl_module" ... type="application/x-nacl" />
</div>

// listener-load.js:
document.getElementById('listener').addEventListener('load', ..., true);

因为 DOM 的构造在加载外部文件之前会阻塞,所以脚本在 <embed> 之前加载。标签被插入。由于外部文件与扩展一起打包,因此对性能的影响可以忽略不计。

关于javascript - Manifest_version = 2 且无内联 javascript 的 NaCl 中的模块加载进度事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811681/

相关文章:

module - 在 OCaml 中获取脚本名称?

python - 导入 python-Xlib 时出现问题

file - Typescript 每个类一个文件

javascript - ajax 加载内容,脚本未执行

javascript - 如何从文档片段中获取实际元素?

javascript-在文本区域中插入文本后添加换行符

jquery-ui - Chrome 扩展内容脚本中的 JQueryUI

javascript - 检测是否已注入(inject) Chrome 扩展内容脚本/内容脚本包含 guard

javascript - Chrome 扩展程序 - 保存弹出窗口的登录详细信息

javascript - 如何在 RangeSlider 中为拖动 handle 赋予不同的颜色