3

我目前正在使用 HtmlUnit 开发一些测试。它正在加载一个包含 Braintree.js(他们的表单加密库)的页面。我有一堆正在运行,但我被困在它称为加密的地方。有问题的JS是:

  (function() {
        try {
            var ab = new Uint32Array(32);
            crypto.getRandomValues(ab);
            sjcl.random.addEntropy(ab, 1024, "crypto.getRandomValues");
        } catch (e) {}
    })();

HtmlUnit 正在抛出:

EcmaError, ReferenceError, "'crypto' is not defined."

我想 HtmlUnit 不包括加密。是否可以自己包含一个加密库?

4

1 回答 1

4

根据您的评论,我必须告诉您 HtmlUnit 在涉及 JavaScript 时令人头疼。它会抱怨很多关于没有定义的变量和未知的函数等等。

真正的浏览器更灵活,例如:它们接受语法不正确的 JavaScript 片段。HtmlUnit 期望一切都是完美的,没有任何错误。此外,即使您没有错过分号,HtmlUnit 也可能会抱怨。

我的建议:

  • 确保你的 JavaScript 在语法上是正确的
  • 避免使用复杂库的用户(jQuery 似乎得到了适当的支持)
  • 如果您可以使用非最小化版本的库,那么值得一试
  • 尽量避免使用复杂的 jQuery 方法(例如:向元素动态添加事件)
  • 而最重要的一个:尝试在不同的BrowserVersions. Internet Explorer(具有讽刺意味)已被证明在解释 JavaScript 时提供了最好的结果
于 2013-10-28T23:29:15.743 回答