Почему я не могу использовать относительные URL с IE7? - PullRequest
8 голосов
/ 05 мая 2010

Я уже некоторое время гуглю и не могу найти ответ на этот вопрос. Моя проблема заключается в следующем:

Для моего jquery мои ссылки должны быть относительными, а не абсолютными. Мой PHP настроен на возврат относительных URL, и все работает нормально, пока я не протестирую его в IE7. По какой-то причине IE7 продолжает изменять мои относительные URL-адреса на abosulute, что нарушает мой js-скрипт. Это нормально? Есть ли способ обойти это?

Например:

IE8, Chrome, Firefox, Safari и т. Д. -

<a href='/page' onclick='click_handler(this);return false;'>clicky</a>

IE7 -

<a href='http://www.myurl.com/page' onclick='click_handler(this);return false;'>clicky</a>

Ответы [ 5 ]

9 голосов
/ 05 мая 2010

То, что я делаю, это захватывает baseUrl в init, например:

var baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf("/") + 1);

... а затем в моем обработчике URL удалите baseUrl:

var url = $(this).attr("href").replace(baseUrl, "");

Также вы можете проверить, нормализован ли href, используя .support():

$.support.hrefNormalized

(возвращает true, если браузер не вносит изменений при получении значения href, поэтому в IE оно в настоящий момент равно false.)

0 голосов
/ 21 февраля 2012

Вот модифицированная версия ответа JKS, в которой вместо подстроки используется разделение. Чуть более элегантно ИМО:

stripBaseUrl : function(url){
    var urlArray = url.split("/");
    return urlArray[urlArray.length - 1];
}
0 голосов
/ 05 мая 2010

Похоже, это как-то связано с проблемами безопасности - http://blogs.msdn.com/ie/archive/2005/08/15/452006.aspx

0 голосов
/ 05 мая 2010

Правильно, кажется, лучший способ сделать это - удалить домен в jQuery. Для тех, у кого есть подобная проблема, вот как выглядит мой обработчик события click:

var href_attr = element.getAttribute('href');
if (href_attr.indexOf('http://')>-1) {
    href_attr = href_attr.substr(location.href.length-1);
};
0 голосов
/ 05 мая 2010

Если бы я был вами, я бы использовал обнаружение в браузере и добавил бы предложение, чтобы урезать URL до относительного пути. Я не на 100% знаком с jQuery, но я думаю, что вы могли бы сделать это с помощью простого разбиения и восстановления или запроса REGEX.

См. Плагин jQuery URL Parser: http://plugins.jquery.com/project/url_parser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...