【发布时间】:2015-04-03 21:45:37
【问题描述】:
假设我在不同域 (mydomain.com) 上的页面上,并且相对 url 仅存在于代码中(不在 DOM 中)
如何在 javascript 中完全组合两个任意 url?
var a = 'http://example.com/some/path/';
var b = '../other/path/';
var c = magicUrlCombine(a,b);
assert(c == 'http://example.com/some/other/path/');
它也应该适用于
var a = 'http://example.com/some/path/';
var b = 'http://pink-unicorns.com/some/other/path/';
var c = magicUrlCombine(a,b);
assert(c == 'http://pink-unicorns.com/some/other/path/');
编辑:
我正在寻找一个完全通用的函数,用于将绝对 url 与任意 url 结合起来。与浏览器用于解析链接的逻辑相同,但用于不在页面 HTML 中和/或与当前 location.href 无关的 url。
var a = 'http://example.com/a/b/c/';
var b = '../d/e/';
assert(c == 'http://example.com/a/b/d/e/')
或
var b = '/f/g/';
assert(c == 'http://example.com/f/g/')
或
var b = 'http://jquery.com/h/i/';
assert(c == 'http://jquery.com/h/i/')
编辑 2:
node.js 有一个 url module 具有正确的功能,但我还没有找到在客户端重用它的好方法。 (how to use node.js module system on the clientside)
我设法破解了我的方法,让它运行起来,但这并不是我觉得将其放入生产站点的真正解决方案。 Hackety hack
【问题讨论】:
-
为了澄清,我正在寻找 msdn.microsoft.com/en-us/library/ay1kx93s.aspx 的等价物 a 是绝对的,b 是绝对的或相对的,c 是绝对的。
-
您能否用实际示例更新您的示例,其中基础和相对路径中没有重复路径?或许我的回答还是正确的。
标签: javascript url