function combineUrl(baseUrl, url) {
  if (!url) {
    return baseUrl;
  }
  if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) {
    return url;
  }
  var i;
  if (url.charAt(0) === '/') {
    // absolute path
    i = baseUrl.indexOf('://');
    if (url.charAt(1) === '/') {
      ++i;
    } else {
      i = baseUrl.indexOf('/', i + 3);
    }
    return baseUrl.substring(0, i) + url;
  } else {
    // relative path
    var pathLength = baseUrl.length;
    i = baseUrl.lastIndexOf('#');
    pathLength = i >= 0 ? i : pathLength;
    i = baseUrl.lastIndexOf('?', pathLength);
    pathLength = i >= 0 ? i : pathLength;
    var prefixLength = baseUrl.lastIndexOf('/', pathLength);
    return baseUrl.substring(0, prefixLength + 1) + url;
  }
}
function combineUrl(baseUrl, url) {
  if (!url) {
    return baseUrl;
  }
  if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) {
    return url;
  }
  var i;
  if (url.charAt(0) === '/') {
    
    i = baseUrl.indexOf(':
    if (url.charAt(1) === '/') {
      ++i;
    } else {
      i = baseUrl.indexOf('/', i + 3);
    }
    return baseUrl.substring(0, i) + url;
  } else {
    
    var pathLength = baseUrl.length;
    i = baseUrl.lastIndexOf('#');
    pathLength = i >= 0 ? i : pathLength;
    i = baseUrl.lastIndexOf('?', pathLength);
    pathLength = i >= 0 ? i : pathLength;
    var prefixLength = baseUrl.lastIndexOf('/', pathLength);
    return baseUrl.substring(0, prefixLength + 1) + url;
  }
}
function combineUrl ( baseUrl , url ) { if ( ! url ) { return baseUrl ; } if ( / ^[a-z][a-z0-9+\-.]*: / i . test ( url ) ) { return url ; } var i ; if ( url . charAt ( 0 ) === '/' ) { // absolute path i = baseUrl . indexOf ( '://' ) ; if ( url . charAt ( 1 ) === '/' ) { ++ i ; } else { i = baseUrl . indexOf ( '/' , i + 3 ) ; } return baseUrl . substring ( 0 , i ) + url ; } else { // relative path var pathLength = baseUrl . length ; i = baseUrl . lastIndexOf ( '#' ) ; pathLength = i >= 0 ? i : pathLength ; i = baseUrl . lastIndexOf ( '?' , pathLength ) ; pathLength = i >= 0 ? i : pathLength ; var prefixLength = baseUrl . lastIndexOf ( '/' , pathLength ) ; return baseUrl . substring ( 0 , prefixLength + 1 ) + url ; } }
Combines two URLs. The baseUrl shall be absolute URL. If the url is an absolute URL, it will be returned as is.
Combines two URLs . The baseUrl shall be absolute URL . If the url is an absolute URL it will be returned as is .