gpt4 book ai didi

javascript - GWT:调用外部 JavaScript 库 (sjcl) 方法

转载 作者:行者123 更新时间:2023-11-29 22:24:46 26 4
gpt4 key购买 nike

我想在我的 GWT 项目(客户端)中使用外部加密库。 (特别是斯坦福 Javascript 加密库,http://crypto.stanford.edu/sjcl/我在项目的 gwt 配置文件 (MyProj.gwt.xml) 中添加了这些行

<script src="libs/sjcl/sjcl.js" />
<script src="libs/sjcl/core/sha256.js" />

并在我的安全类中创建了一个新方法:

public static native String sha256(String ptext)
/*-{
return sjcl.hash.sha256.hash(ptext);
}-*/;

但是当我调用它的时候

String result = Security.sha256("password");

我得到一个错误(“sjcl 未定义”)

如果知道这些问题和 javasript 的人可以阅读该库并告诉我正确的方法,我将节省大量时间和精力 - 无需深入研究可怕的 JavaScript。

更新:

我首先想到的是,外部库必须在/war 目录中其次,如果我将以下内容仅添加到 gwt.xml 文件,我将无法让 GWT 导入 *.js 文件

<script src="libs/sjcl/sjcl.js"></script>
<script src="libs/sjcl/core/sha256.js"></script>

我必须在入口点的 html 源代码中添加类似的行

<script src="/sjcl/sjcl.js"></script>
<script src="/sjcl/core/sha256.js"></script>

这种导入方式有效,我可以用 Chrome Inspector 检查它

我尝试使用另一个没有 sjcl 复杂的库,但它运行良好。所以,很明显,我没有正确使用 sjcl。另一个库更简单,只是纯方法,sjcl 使用类和东西,但由于我根本不懂 JS,所以如果不深入研究 JS 语法,我无法弄清楚如何正确调用这些东西。我真的很想跳过这部分。

任何人都可以查看 sjcl 代码并告诉我如何正确调用该方法吗?源码真的很小,我觉得JS亲们一眼就能搞定。

更新 2:原来在gwt.xml中加入如下代码即可,将library放在/war中即可,注意路径中前面的“/”。如果你不把它放在那里,GWT 将在模块目录中为你寻找 lib

更新 3:并且不要忘记清除浏览器的缓存,否则“未找到”错误不会消失

最佳答案

确保当您在全局上下文中谈论对象时,您会在它们前面加上 $wnd,这意味着应用程序正在运行的主 window 实例。这记录在 JSNI 文档中,请参阅 https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#writing .

public static native String sha256(String ptext)
/*-{
return $wnd.sjcl.hash.sha256.hash(ptext);
}-*/;

关于javascript - GWT:调用外部 JavaScript 库 (sjcl) 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239732/

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