Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   location.href странно себя ведет во всех IE (https://javascript.ru/forum/css-html-internet-explorer/52741-location-href-stranno-sebya-vedet-vo-vsekh-ie.html)

roxoman93 04.01.2015 23:05

location.href странно себя ведет во всех IE
 
На странице имеется <base href="http://site-name.ru/test/">
При document.location.href="search" со страницы http://site-name.ru/test переходит на http://site-name.ru/search. А вот со страниц типа http://site-name.ru/test/about переходит правильно, на http://site-name.ru/test/search. Так себя ведет только IE (причем любой версии), остальные браузеры любую другую ссылку обрабатывают, как задумано (т. е. при document.location.href="search" со страницы http://site-name.ru/test переходит на http://site-name.ru/test/search). Уже час бьюсь, не знаю даже, как грамотно вопрос гуглу задать, поэтому пишу сюда.

roxoman93 05.01.2015 21:17

неужели ни у кого нет мыслей?:(

bes 05.01.2015 22:32

Цитата:

Сообщение от roxoman93
неужели ни у кого нет мыслей?

приложи тестовый архивчик - распаковал-проверил, так влом проверять, тем более для ie

ruslan_mart 06.01.2015 11:53

Ну всё правильно, так и должно работать. Одно дело, если бы у тебя ссылка была именно такая: site-name.ru/test/, а не такая как в твоём примере.
Не заморачивайся, пиши так: document.location.href = '/test/search/';

roxoman93 06.01.2015 18:55

Цитата:

Сообщение от Ruslan_xDD (Сообщение 349823)
Ну всё правильно, так и должно работать. Одно дело, если бы у тебя ссылка была именно такая: site-name.ru/test/, а не такая как в твоём примере.
Не заморачивайся, пиши так: document.location.href = '/test/search/';

Так в таком случае при переходе по document.location.href='search' с http://site-name.ru/test/about переходит на http://site-name.ru/test/test/search. Проще уж полные ссылки указывать, но так не делается, к тому же в хроме, мозилле и яндексе нормально работает.

Deff 07.01.2015 08:28

var href = 'search', ie = '\v'=='v';
function locat_IE(href){
 var f=document.createElement('form');
 f.action=href;document.body.appendChild(f);f.submit();
}
if(ie)locat_IE(href);else location.href = href;

Или типовой путь
<!DOCTYPE HTML>
<html>
<head>
    <base href="http://site-name.ru/test/">
    <script type="text/javascript">
        function GetBaseURL () {
            if ('baseURI' in document) {
                alert ("The base URL for the document:\n" + document.baseURI);
            }
            else {
                var baseTags = document.getElementsByTagName ("base");
                if (baseTags.length > 0) {
                    alert ("The base URL for the document:\n" + baseTags[0].href);
                }
                else {
                    alert ("The base URL for the document:\n" + window.location.href);
                }
            }
        }
    </script>
</head>
<body>
    <button onclick="GetBaseURL ()">Get the base URL for the document</button>
</body>
</html>

roxoman93 07.01.2015 17:18

иногда решение лежит где-то рядом, а мы все усложняем)))
document.location.href = $('base').attr('href') + 'адрес';

Deff 07.01.2015 17:34

roxoman93,
1. Вы не говорили что есть jQuery ибо там просто мон создать тег <а>

$(function(){
   var b = $("<a>",{href:"."})[0].href;
   document.location.href = b + 'адрес';
});

Кроме <base href="http://site-name.ru/test/">
Есть и <base target="">
Есть уверенность что оно не стоит первым ?
И есть уверенность, что <base href="http://site-name.ru/test/"> единственное на странице ?

roxoman93 07.01.2015 22:37

Цитата:

Сообщение от Deff (Сообщение 350132)
roxoman93,
1. Вы не говорили что есть jQuery ибо там просто мон создать тег <а>

$(function(){
   var b = $("<a>",{href:"."})[0].href;
   document.location.href = b + 'адрес';
});

Кроме <base href="http://site-name.ru/test/">
Есть и <base target="">
Есть уверенность что оно не стоит первым ?
И есть уверенность, что <base href="http://site-name.ru/test/"> единственное на странице ?

<base target=""> нету, <base href="http://site-name.ru/test/"> единственное.


Часовой пояс GMT +3, время: 00:56.