2010-10-12 71 views
0

我想知道如果url是相对的或不使用javascript。基本上我会通过url,如果url是相对的,则追加当前的url,即减去文件名。可有一个人帮我这个在javascript中找到相关网址

如: -

当前URL = http://example.com/big/index.html

PASSED URL 1 = newindex.html
输出 = http://example.com/big/newindex.html

已通过URL 2 = http://mysite.com/big/newindex.html
输出 = http://mysite.com/big/newindex.html

+3

到目前为止您尝试过什么?你遇到了什么问题?你可以展示你到目前为止的代码吗? – Oded 2010-10-12 08:11:07

+0

您可以检查字符串开头是否存在http://。除上述例外情况外,是否有特殊情况? – 2010-10-12 09:17:39

回答

0
<script type="text/javascript"> 

    var loc = location.href; 
    var baseurl = loc.substring(0,loc.lastIndexOf('/')); 

    function getoutputurl(inputurl) 
    { 
     var returnurl = ''; 
     if (inputurl) 
     { 
      if(inputurl.toLowerCase().indexOf('http://')==0) 
      { 
       returnurl = inputurl; 
      } 
      else 
      { 
       returnurl = baseurl+'/' ; 
       if(inputurl.indexOf('/')==0) 
       { 
        returnurl = returnurl + inputurl.substring(1); 
       } 
       else 
       { 
        returnurl = returnurl + inputurl; 
       } 
      } 
     } 
     return returnurl; 
    } 

    alert(getoutputurl('http://google.com')); 
    alert(getoutputurl('google.com')); 
</script> 

尝试这个代码,它的工作原理

0

使用正规表示法来检查,如果通过网址有非相对的组成部分。如果不是基于当前url的一部分创建新的输出url(例如通过常规exp来创建)和相关部分。

2

所以最简单的将是这样

var loc = location.href; 
var dir = loc.substring(0,loc.lastIndexOf('/')); 
function getHref(urlString) { 
    if (urlString) return (urlString.toLowerCase().indexOf('http:')==0)?urlString:dir+'/'+((urlString.indexOf('/')==0)?urlString.substring(1):urlString); 
} 

我现在用的是location objectsubstring,的indexOf link textlastIndexOfternary operator - 嵌套

+0

可以解释一下你的代码 – aWebDeveloper 2010-10-12 09:09:21

+0

请看我修正的答案 – mplungjan 2010-10-12 09:30:57

+1

鳕鱼中的一个bug请修正它“?urlString.substring(1)”为“?urlString.substring(1):urlString);” – aWebDeveloper 2010-10-12 10:41:44