2010-12-17 14 views
1

Sagen Sie bitte einen Link mit einem relativen Pfad haben, der wie folgt aussieht:Rückkehr relativen Pfad der Anker in IE

<a id="link" href="/folder/filename.php">Link Text</a> 

und Sie versuchen, dieses href mit Mootools Code wie folgt zu greifen:

$('link').get('href'); 

Das wird /folder/filename.php in jedem Browser aber IE zurückgeben, die buchstäblich die Domäne für Sie einfügt und http://www.domain.com/folder/filename.php zurückgibt.

Gibt es einen Weg um dies? Wenn nicht, wie kann ich alles außer der Domain in allen Browsern zuverlässig erfassen? Das String-Matching wird sehr mühsam sein, da diese Site derzeit auf drei verschiedenen Domains getestet wird, ganz zu schweigen von den verschiedenen Leuten, die lokale Tests durchführen, die wissen, welche Kombination aus Localhost, Portnummer und was sonst noch zu tun ist.

+0

Ich kopierte Ihre zwei Zeilen Code in http://jsfiddle.net/ und es funktionierte für mich. Ich benutzte FF3.6 und IE7 –

Antwort

2

Sie wahrscheinlich off Test am besten sind, um zu sehen, ob die URL mit einem Schema URI beginnt und Domäne. Dies vermeidet den Odd-but-Perfectly-Valid-Fall, in dem die Domäne in dem Pfad existiert.

var href = $('link').get('href'), 
    prefix = location.protocol + "//" + location.hostname; 
if (href.indexOf(prefix) === 0) { 
    href = href.substring(prefix.length); 
} 
+0

Danke. Arbeitete perfekt. –

2

versuchen diese in eine Funktion machen

function GetRelative(selector) 
{ 
    var url = $(selector).get("href"); 
    var hostname = window.location.hostname; 
    var index = url.indexOf(hostname); 
    if (index == -1) 
     return url; 
    else 
     return url.substring(index); 
} 
Verwandte Themen