gpt4 book ai didi

javascript - 使用 env.js 在 Rhino 中 anchor 元素的路径名返回未定义

转载 作者:行者123 更新时间:2023-11-29 22:05:50 25 4
gpt4 key购买 nike

我遇到了 an issue我相信这 Root 于 Rhino 中 anchor 标签的实现。虽然我正在使用 env.js ,我怀疑我可能没有正确配置某些东西。

特别是,当我尝试针对为 angularjs 应用程序编写的代码编写单元测试时,我的问题就出现了。当我包含 angular.js(目前的版本 1.2.1)时,出现以下错误:

TypeError: 无法调用未定义的方法“charAt”

我确信错误是 this call 的结果到 urlParsingNode.pathname 因为 console.log 调用显示 pathname 对象未定义。

我跟踪 urlParsingNode 的实例化到 this line我们看到它是调用 document.createElement("a"); 的结果。进一步往下,我们看到他们在 this line 中设置了 href 属性。希望创建的 anchor 标记能够利用浏览器正确解析 URL。

我必须相信我不是第一个尝试通过 Rhino 对 angular 进行 JS 单元测试的人,但到目前为止我还没有成功地用 Google 搜索自己的解决方案。任何提示将不胜感激。

最佳答案

找到它并修复它。 pathname getter/setter 在 env.js 中没有为 HTMLAnchorElement 定义。

我提交了 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 - 使用 env.js 在 Rhino 中 anchor 元素的路径名返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028520/

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