2010-12-17 63 views
1

假设你有看起来像这样的相对路径的链接:返回锚的相对路径在IE

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

,并尝试使用这样Mootools的代码,以抢HREF:

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

那么在每个浏览器中都会返回/folder/filename.php而不是真正为你插入域的IE,返回http://www.domain.com/folder/filename.php

有没有办法解决这个问题?如果没有,我怎么能可靠地抓住所有浏览器中的域名?字符串匹配将是一个痛苦,因为这个网站目前正在三个不同的域进行测试,更不用说不同的人在进行本地测试,谁知道本地主机,端口号和其他任何组合。

+0

我将你的两行代码复制到http://jsfiddle.net/中,它对我有用。我正在使用FF3.6和IE7 – 2010-12-17 02:08:40

回答

2

你可能最好关闭测试,看是否URL以URI方案加上域名开始。这可以避免路径中存在域的奇怪但完全有效的情况。

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

谢谢。完美工作。 – 2010-12-17 02:21:41

2

尝试使这成为一个功能

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