1

根据此文档,我将 manifest_version 升级为“2” ,然后惊讶地看到 chrome 出现以下错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令

虽然很清楚他们为什么要这样做,但我现在不清楚我应该如何管理模块加载进度事件。即使我将它升级到最新的(开发)辣椒版本,文档仍然推荐一个内联脚本(这显然不起作用)。

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

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

任何人都可以提出一个可靠的替代这个认可的样板吗?

4

1 回答 1

3

根据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>

如果内容安全策略禁止这样做(另请参阅)。只有一种方法可以解决它:通过将脚本移动到外部文件:

<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);

Because the construction of the DOM blocks until the external file is loaded, the script is loaded before the <embed> tag is inserted. Since the external files are packaged with the extension, the impact on performance can be neglected.

于 2012-08-04T21:31:38.363 回答