Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

IE6 + location.href (Snipe)
Author Message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Wed Oct 08, 2008 2:45 pm (написано за 51 секунду)
   Post subject: IE6 + location.href
Reply with quote

В общем есть аяксовый сайт, на нем по интервалу проверяется location.href.
Изменяется только location.hash, но из-за проблем с оперой делается все через location.href.

Так вот, если в IE6 изменить часть url в адресной строке, а не скриптом, то потом location.href существует отдельно от адресной строки: меняем location.href скриптом, алертим - location.href поменялся, адресная строка - нет.

Плюс к проблеме - перестают стираться символы в разных input-text'ах.

Вот накидал код, если есть где загрузить на IE6, можно посмотреть:
Code (html): скопировать код в буфер обмена
<head> (december.com/html/4/element/head.html)
<title> (december.com/html/4/element/title.html)</title>
</head>
<body> (december.com/html/4/element/body.html)
<script (december.com/html/4/element/script.html) type="text/javascript"> (december.com/html/4/element/.html)
location.href += '#adfdaf';
function zhmi() {
    alert(location.href + '\n' + location.hash);
    location.href += 1;
}
</script>
<div (december.com/html/4/element/div.html) onclick="zhmi();"> (december.com/html/4/element/.html)
push
</div>
<body> (december.com/html/4/element/body.html)
</html>
Чтоб проверить, надо запустить в IE6, поменять урл после #, нажать enter, нажать "push" - адресная строка не поменяется, location.href изменится.

Кто-нибудь знает как с этим бороться?
Первая мысль - если кто-то ручками поменял адрес, перезагрузить страницу не аяксом, но как проверить ручками что-то было введено или не ручками?
Вторая мысля - м.б. есть какой-то доступ к адресной строке в таком случае?
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Wed Oct 08, 2008 4:26 pm (спустя 1 час 40 минут; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

ни под IE6 ни под IE7 или FF3 проблемы не увидел. павда, во избежание бреда при перезагрузки страницы перенес location.href += '#adfdaf'; в ф-ю zhmi и прибил location.href += 1; за ненадобностью.
Back to top
View user's profile Send private message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Wed Oct 08, 2008 6:14 pm (спустя 1 час 48 минут; написано за 4 минуты 45 секунд)
   Post subject:
Reply with quote

Зачем переделывать? "Я Ваш код переписал и ошибок не нашел." %)

Хм. Видимо Вы не так поняли. Смысл в том, чтоб страница загружалась с hash'ем (для этого location.href += '#adfdaf';).
После загрузки надо ручками в адресной строке поменять hash и нажать enter.
После этого надо запустить zhmi() в том состоянии, в котором она есть. Смысл в том, чтобы средствами скрипта изменить hash после того как он был изменен ручками.

Так вот после проделанных действий только в IE6 location.href перестанет соответствовать адресной строке.

*hash = location.hash
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Oct 09, 2008 12:27 am (спустя 6 часов 13 минут; написано за 2 минуты 33 секунды)
   Post subject:
Reply with quote

Snipe, сделал как Вы просили, все он дописывает потом (1 в конец каждый раз (только после а не до alert) как жмете push. Только вот в строку оно не отображается и в history тоже, но в location.hash и в location.href, все как просите.
Back to top
View user's profile Send private message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Thu Oct 09, 2008 10:34 am (спустя 10 часов 6 минут; написано за 2 минуты 38 секунд)
   Post subject:
Reply with quote

dimagolov,
Ну так мне как раз и надо, чтоб строка тоже менялась. Т.е. чтоб пользователь мог ввести что-то руками, получить соответствующую страницу и продолжить дальше навигацию по сайту с изменениями адресной строки.

Есть способ чтоб строку с урл тоже можно было менять скриптом? А не так, чтоб location.href отдельно, адресная строка отдельно.

По алерту прокосячил чуть %)
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Oct 09, 2008 6:42 pm (спустя 8 часов 7 минут; написано за 1 минуту)
   Post subject:
Reply with quote

подозреаю, что проблема может быть в отсутствии нужных якорей.

и мне кажется, что переход на якорь навигацией не является, так как перезагрузки страницы не происходит.
Back to top
View user's profile Send private message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Thu Oct 09, 2008 11:55 pm (спустя 5 часов 13 минут; написано за 10 минут 45 секунд)
   Post subject:
Reply with quote

dimagolov wrote:
подозреаю, что проблема может быть в отсутствии нужных якорей.
Ваши якоря == мой location.hash?
Quote:
и мне кажется, что переход на якорь навигацией не является, так как перезагрузки страницы не происходит.
Я понимаю, что в IE6 смена якоря не вызывает перезагрузку страницы.

На моем сайте используется ajax, поэтому location.hash проверяется по интервалу и если он изменен, тогда аяксом подгружается новое наполнение, без перезагрузки страницы - это я называю навигацией в данном случае.

1. Можно как-нибудь узнать, адресная строка была изменена пользователем с клавиатуры или через скрипт (например изменением location.hash)? Тогда бы я смог перезагрузить страницу, если пользователь ввел якоря сам и не перезагружать страницу, но использовать аякс, если url был изменен скриптом.

2. Или м.б. можно как-то не через location.href изменить адресную строку средствами скрипта, после того как ее изменял пользователь?

3. Еще какой-нибудь вариант, который не пришел мне в голову (отказаться от IE6 или забить на ручной ввод якорей не предлагать =)).
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Fri Oct 10, 2008 4:40 pm (спустя 16 часов 45 минут; написано за 1 минуту 54 секунды)
   Post subject:
Reply with quote

нет, якоря это anchor, то есть тег <a>
по п.1: странное желание заставить пользователя что-то вводит руками в адресной строке. но как раз это вызывает изменение в location.hash
а если хотите перейти куда-то скриптом, то можно дергать ajax напрямую, а не через таймер.
Back to top
View user's profile Send private message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Fri Oct 10, 2008 5:19 pm (спустя 38 минут; написано за 6 минут 28 секунд)
   Post subject:
Reply with quote

dimagolov wrote:
по п.1: странное желание заставить пользователя что-то вводит руками в адресной строке. но как раз это вызывает изменение в location.hash
Нет такого желания, есть суровая реальность в которой пользователь может изменить что-то в адресной строке, например чтоб перейти на 3 страницу в списке из 5 страниц.
Беда вся в том, что после этого не будет меняться адресная строка. И backspace перестанет работать в разного рода инпутах.
Quote:
а если хотите перейти куда-то скриптом, то можно дергать ajax напрямую, а не через таймер.
Даже если так, адресную строку надо потом изменить, после перехода аяксом на другую страницу, а она не меняется.
Back to top
View user's profile Send private message
Snipe
Заглянувший



Joined: 08 Oct 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Wed Oct 15, 2008 10:19 am (спустя 4 дня 16 часов 59 минут; написано за 32 секунды)
   Post subject:
Reply with quote

Я правильно понимаю, что решения нет? =(
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML