首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT:调用外部JavaScript库(sjcl)方法

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

Stack Overflow用户
提问于 2012-04-20 11:11:38
回答 2查看 5.4K关注 0票数 2

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

代码语言:javascript
复制
<script src="libs/sjcl/sjcl.js" />
<script src="libs/sjcl/core/sha256.js" />

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

代码语言:javascript
复制
public static native String sha256(String ptext)
      /*-{
       return sjcl.hash.sha256.hash(ptext);
       }-*/;

但当我调用它时

代码语言:javascript
复制
String result = Security.sha256("password");

我得到一个错误("sjcl is not defined")

如果知道这些问题和javasript的人能够阅读这个库并告诉我正确的方法,我将节省大量的时间和精力--不用再去钻研可怕的JavaScript了。

更新:

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

代码语言:javascript
复制
<script src="libs/sjcl/sjcl.js"></script>
<script src="libs/sjcl/core/sha256.js"></script>

我不得不在入口点的html源代码中添加类似的代码行。

代码语言:javascript
复制
<script src="/sjcl/sjcl.js"></script>
<script src="/sjcl/core/sha256.js"></script>

这样导入工作,我可以用Chrome Inspector检查它

我尝试使用另一个库,不像sjcl那么复杂,它工作得很好。所以,很明显,我没有正确使用sjcl。另一个库更简单,只是纯方法,sjcl使用类之类的东西,但由于我根本不了解JS,所以如果不深入JS语法,我就不知道如何正确地调用这些东西。我真的很想跳过这一部分。

有人可以查看sjcl代码并告诉我如何正确调用该方法吗?源代码真的很小,JS pro可以一目了然,我想。

更新2:事实证明,将以下代码添加到gwt.xml中就足够了,只需将库放在/war中,并注意路径中前面的"/“。如果您不把它放在那里,GWT将在模块目录中为您查找lib

更新3:别忘了清除浏览器的缓存,否则“找不到”错误就不会消失

EN

回答 2

Stack Overflow用户

发布于 2012-04-20 12:09:52

确保在讨论全局上下文中的对象时,使用$wnd作为它们的前缀,这意味着应用程序在其中运行的主window实例。JSNI文档中记录了这一点,请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#writing

代码语言:javascript
复制
public static native String sha256(String ptext)
  /*-{
      return $wnd.sjcl.hash.sha256.hash(ptext);
  }-*/;
票数 3
EN

Stack Overflow用户

发布于 2012-04-20 11:20:18

"sjcl is not defined“表示您没有正确导入sjcl文件。检查文件路径并确保浏览器可以访问该文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10239732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档