gpt4 book ai didi

javascript - 在浏览器扩展中使用 libsodium.js

转载 作者:行者123 更新时间:2023-11-30 19:57:35 25 4
gpt4 key购买 nike

我正在尝试在扩展程序中使用 libsodium.js 库,到目前为止只在 Chrome(当前版本 71)中进行了测试。

到目前为止,它在标准网页上下文中运行良好,但是当我尝试在扩展中加载它时,出现错误。无论是作为脚本加载,还是我在 list 中将一个页面定义为唯一脚本并使脚本异步(字面上与浏览器页面中的方式相同):

<script src="dist/browsers/sodium.js" async></script>

我只在扩展程序中遇到了同样的错误,而在网页中却没有。错误是:

Uncaught (in promise) TypeError: s is not a function

据我所知,当页面为扩展加载时,似乎有一个尚未解决的 promise 包含 function s,但网页正确解决了它。也许我错了,因为它是由 Emscripten 生成的 8200 多行代码,所以通读起来有点迟钝。我似乎无法在扩展文档或我所做的大量谷歌搜索中找到任何答案。

谁能指出正确的方向来解决这个问题?

最佳答案

这个问题的答案是扩展有更严格的内容安全策略。他们不允许执行 eval 或类似 eval 的函数。显然,在这个库的 webassembly 中,至少有一个这样的函数阻碍了 promise 的成功。

可以在这里找到解决方案:https://developer.chrome.com/extensions/sandboxingEval

它确实可以来回发送消息,并且 iframe 确实可以访问 promise 中的库/结果代码。

我希望这对其他人也有帮助,如果需要编辑或澄清,请告诉我。

关于javascript - 在浏览器扩展中使用 libsodium.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53773291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com