首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在envjs中设置相对window.location.href

在envjs中设置相对window.location.href
EN

Stack Overflow用户
提问于 2012-06-12 08:28:51
回答 2查看 1.6K关注 0票数 4

我使用java运行Envjs,以便在Jasmine中运行javascript单元测试。这将允许我在没有浏览器的情况下运行测试,并使集成到Jenkins (一个持续集成构建服务器)变得更加容易。

我有一个LoadSpecRunner.js文件( Envjs运行),它使用如下代码加载实际的茉莉测试运行程序。

代码语言:javascript
复制
window.location.href = 'file:///c:/source/JasmineTest/SpecRunner.html');

问题是,将完整的url设置为文件很好,而我所有设置相对路径的尝试都失败了。下面是我为返回的输出设置一个相对url的一些尝试

代码语言:javascript
复制
window.location.href = Envjs.uri('../JasmineTest/SpecRunner.html');

代码语言:javascript
复制
window.location.href = '../JasmineTest/SpecRunner.html';

file://c/source/JasmineTest/SpecRunner.html文件

打开失败

Java异常: java.net.UnknownHostException: C

代码语言:javascript
复制
window.location.href = window.location.href;

file://c/:/Source/jasmine-reporters/about:blank文件

打开失败

JavaException: java.net.UnknownHostException: C

有人有什么想法吗?

谢谢

塞德

PS。再读一读我想做的事:

http://skaug.no/ingvald/2010/10/javascript_unit_testing/

http://www.build-doctor.com/2010/12/08/javascript-bdd-jasmine/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-26 10:07:29

我遇到了同样的问题,并通过修改env.hino.1.2.js来解决它。

代码语言:javascript
复制
if (!base) {
    base = 'file://' +  Envjs.getcwd() + '/';
}

->

代码语言:javascript
复制
if (!base) {
    base = 'file:///' +  Envjs.getcwd() + '/';
}
票数 1
EN

Stack Overflow用户

发布于 2012-07-17 10:11:16

希望我能正确理解您的查询--下面的内容看上去如何?(你可能需要调整一下baseURL,如果我把它弄坏了)。

职能;

代码语言:javascript
复制
function resolvePath (relativePath) {
  var protocol = "file:///c:/";
  var baseUrl = "source/JasmineTest";
  var reUpward = /\.\.\//g;
  var upwardCount = (relativePath.match(reUpward) || []).length;
  return protocol + (!upwardCount ? baseUrl : baseUrl.split("/").slice(0, -upwardCount).join("/")) + "/" + relativePath.replace(reUpward, "");
}

实例调用;

代码语言:javascript
复制
resolvePath("SpecRunner.html");
// "file:///c:/source/JasmineTest/SpecRunner.html"
resolvePath("path/SpecRunner.html");
// "file:///c:/source/JasmineTest/path/SpecRunner.html"
resolvePath("../../SpecRunner.html");
// "file:///c://SpecRunner.html"
resolvePath("../SpecRunner.html");
// "file:///c:/source/SpecRunner.html"
resolvePath("SpecRunner.html");
// "file:///c:/source/JasmineTest/SpecRunner.html"

这里还有一个更长的版本,应该更容易理解,它与resolvePath相同;

代码语言:javascript
复制
function longerVersionOfResolvePath (relativePath) {
  var protocol = "file:///c:/";
  var baseUrl = "source/JasmineTest";
  var reUpward = /\.\.\//g;
  var upwardCount = (relativePath.match(reUpward) || []).length;

  var walkUpwards = upwardCount > 0;
  var relativePathWithUpwardStepsRemoved = relativePath.replace(reUpward, "");
  var folderWalkedUpTo = baseUrl.split("/").slice(0, -upwardCount).join("/");

  if (walkUpwards) {
    return protocol + folderWalkedUpTo + "/" + relativePathWithUpwardStepsRemoved;
  }
  else {
    return protocol + baseUrl + "/" + relativePath;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10992991

复制
相关文章

相似问题

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