2010-10-12 7 views
0

Je veux savoir si l'URL est relative ou non en utilisant javascript. Fondamentalement, je vais passer l'URL, si l'URL est relative ajouter l'URL actuelle, c'est-à-dire moins le nom du fichier. Quelqu'un peut me aider avec ceDécouvrez les URL relatives en javascript

par exemple: -

urls = http://example.com/big/index.html

URL PASSÉ 1 = newindex.html
SORTIE = http://example.com/big/newindex.html

ADOPTÉ URL 2 = http://mysite.com/big/newindex.html
SORTIE = http://mysite.com/big/newindex.html

+3

Qu'avez-vous déjà essayé? Quels problèmes avez-vous rencontrés? Pouvez-vous montrer le code que vous avez jusqu'ici? – Oded

+0

Vous pouvez vérifier la présence de http: // au début de la chaîne. Existe-t-il des cas exceptionnels autres que les exemples ci-dessus? –

Répondre

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> 

Essayez ce code, il fonctionne

0

Utilisez expresion régulièrement pour vérifier si l'URL passé ont composante non relative. Si ce n'est pas le cas, créez une nouvelle URL de sortie basée sur une partie de l'URL actuelle (coupée via exp régulière aussi par exemple) et une partie relative.

2

Ainsi, le plus simple serait quelque chose comme

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); 
} 

J'utilise le location object, substring, indexOf link text, lastIndexOf et ternary operator - emboîtés

+0

pouvez-vous expliquer votre code un peu – aWebDeveloper

+0

S'il vous plaît voir ma réponse modifiée – mplungjan

+1

un bug dans la morue s'il vous plaît le fixer "? UrlString.substring (1)" à "? UrlString.substring (1): urlString);" – aWebDeveloper

Questions connexes