Предполагается, что я нахожусь на странице в другом домене (mydomain.com) и что относительный URL-адрес существует только в коде (но не в DOM)
Как мне полностью объединить два произвольных URL в javascript?
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/');
EDIT:
Я ищу совершенно общую функцию для объединения абсолютного URL с произвольным URL. Та же логика, что и в браузере, используется для разрешения ссылок, но для URL, которых нет в HTML-коде страницы и / или нет относительно текущего местоположения. Href.
var a = 'http://example.com/a/b/c/';
var b = '../d/e/';
assert(c == 'http://example.com/a/b/d/e/')
OR
var b = '/f/g/';
assert(c == 'http://example.com/f/g/')
OR
var b = 'http://jquery.com/h/i/';
assert(c == 'http://jquery.com/h/i/')
РЕДАКТИРОВАТЬ 2:
node.js имеет модуль url , который имеет правильную функциональность, но я не нашел хорошего способа использовать его на стороне клиента. ( как использовать модульную систему node.js на стороне клиента )
Мне удалось взломать мой путь, чтобы заставить его работать, но это не совсем то решение, которое я чувствую себя комфортно, вставляя на производственную площадку. Взломать взломать