Возвращение относительного пути якорей в IE - PullRequest
1 голос
/ 17 декабря 2010

Скажем, у вас есть ссылка с относительным путем, которая выглядит следующим образом:

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

, и вы пытаетесь получить этот href с помощью кода Mootools следующим образом:

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

Это будетвернуть /folder/filename.php в каждом браузере, кроме IE, который буквально вставляет домен для вас, возвращая http://www.domain.com/folder/filename.php.

Есть ли способ обойти это?Если нет, как я могу надежно получить все, кроме домена во всех браузерах?Сопоставление строк будет проблемой, потому что этот сайт в настоящее время тестируется в трех разных доменах, не говоря уже о разных людях, проводящих локальное тестирование, которые знают, какая комбинация localhost, номера порта и всего остального.

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Возможно, вам лучше всего проверить, начинается ли URL-адрес со схемы URI плюс домен.Это позволяет избежать странного, но совершенно правильного случая, когда домен существует в пути.

var href = $('link').get('href'),
    prefix = location.protocol + "//" + location.hostname;
if (href.indexOf(prefix) === 0) {
    href = href.substring(prefix.length);
}
2 голосов
/ 17 декабря 2010

попробуйте превратить это в функцию

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...