在IE中返回锚点的相对路径

时间:2010-12-17 01:54:33

标签: javascript internet-explorer mootools

假设您有一个相对路径的链接,如下所示:

<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

有解决方法吗?如果没有,我怎样才能在所有浏览器中可靠地获取除域之外的所有内容?字符串匹配将是一个痛苦,因为该站点目前正在三个不同的域上进行测试,更不用说与谁知道localhost,端口号和其他任何组合的本地测试的不同人。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

您最好测试一下,看看URL是否以URI方案加上域开头。这避免了域存在于路径中的奇怪但完全有效的情况。

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