Anchor element's pathname returns undefined in Rhino with env.js

拥有回忆 提交于 2019-12-06 11:10:56

问题


I have run into an issue that I believe is rooted in the implementation of anchor tags in Rhino. Although I am utilizing env.js, I suspect perhaps I am not configuring something correctly.

In particular, my issue occurs while I am attempting to write unit tests against code written for an angularjs application. When I include angular.js (versions 1.2.1 to present), I get the following error:

TypeError: Cannot call method "charAt" of undefined

I am convinced the error is the result of this call to urlParsingNode.pathname since a console.log call reveals that the pathname object is undefined.

I traced the instantiation of the urlParsingNode to this line where we see that it is the result of a call to document.createElement("a"); Further down, we see that they set the href attribute in this line in hopes that the created anchor tag will utilize the browser to correctly parse the URL.

I have to believe I'm not the first to attempt JS unit testing for angular via Rhino, but thus far I've not successfully Googled myself to a solution. Any tips will be greatly appreciated.


回答1:


Found it and fixed it. The pathname getter/setter simply was undefined for HTMLAnchorElement in env.js.

I submitted a pull request, but unfortunately the project looks all but abandoned. I also couldn't figure out how to build it out to a single file. It appears perhaps someone has taken it upon themselves to break it apart into require.js modules. Not a battle worth fighting for my use case.

So for anyone else who hits this issue, I have the code you need below. It belongs in the HTMLAnchorElement.prototype. In my copy of env.js 1.2, this prototype begins on line 8075. I added the following at line 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));
},

FYI, my particular issue is resolved with this pull request.



来源:https://stackoverflow.com/questions/21028520/anchor-elements-pathname-returns-undefined-in-rhino-with-env-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!