我遇到了an issue我相信这源于 Rhino 中 anchor 标记的实现。虽然我正在使用env.js ,我怀疑我可能没有正确配置某些东西。
特别是,当我尝试针对为 angularjs 应用程序编写的代码编写单元测试时,会出现我的问题。当我包含 angular.js
(目前的版本 1.2.1)时,我收到以下错误:
类型错误:无法调用未定义的方法“charAt”
我确信该错误是 this call 的结果到 urlParsingNode.pathname
,因为 console.log
调用显示 pathname
对象未定义。
我将 urlParsingNode
的实例化追踪到 this line我们看到它是调用 document.createElement("a");
的结果。 再往下,我们看到他们在 this line 中设置了 href
属性。希望创建的 anchor 标记能够利用浏览器正确解析URL。
我必须相信我不是第一个尝试通过 Rhino 对 Angular 进行 JS 单元测试的人,但到目前为止我还没有成功在 Google 上找到解决方案。任何提示将不胜感激。
最佳答案
找到它并修复它。 env.js
中的 HTMLAnchorElement
的 pathname
getter/setter 根本没有定义。
我提交了a pull request ,但不幸的是该项目看起来几乎被放弃了。我也不知道如何将其构建为单个文件。看起来也许有人自己将其分解为 require.js
模块。对于我的用例来说,这不是一场值得战斗的战斗。
因此,对于遇到此问题的其他人,我在下面提供了您需要的代码。它属于 HTMLAnchorElement.prototype
。在我的 env.js
1.2 副本中,此原型(prototype)从第 8075 行开始。我在第 8118 行添加了以下内容。
get pathname() {
var uri = Envjs.urlsplit(this.href);
return uri.path;
},
set pathname(val) {
var uri = Envjs.urlsplit(this.href);
uri.path = val
this.href(uri.urlunsplit(uri));
},
仅供引用,我的特定问题已通过 this pull request 解决.
关于javascript - anchor 元素的路径名在 Rhino 中使用 env.js 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028520/