Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> document.location - зло! 
:(
    Опции темы
ksnk
Дата 14.11.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



обнаружил неприятную фичу.

на сайте в результате нескольких Ajax опрераций, отправляемых post'ом страничка делает вывод, что неплохо бы обновиться. Для этого она вполне очевидно выполняет 
Код

document.location.reload()

Оказывается, FF и Хром не воспринимают такой переход за полноценный. При таком переходе FF начинает плакаться о том, что "для отображения этой страницы нужно перепослать какие-то данные". Хром тоже примерно в таком-же духе выражается. Один IE ( слава Биллу! smile ) понимет, что-же мне нужно...

Решением видится создание пустой формы с get методом. При возникновении желания перейти можно сделать
Код

form.action=document.location; form.submit();

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





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 14.11.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Дополнение: FF так себя ведет, когда выполняется фоновая загрузка файлов. Простыми Ajax запросами его не смутить.  Фоновая загрузка выполняется в скрытый фрейм... 

А вот Хрому как-то удалось отвертется :-( smile  Эффект на нем уже не вопроизводится... Хм... Успели исправить или у меня просто руки кривы? ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SelenIT
Дата 14.11.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



А почему именно document.location, а не window.таковой? Первый-то вроде как нестандартный и устаревший... Даже на MDC рекомендуют:
Цитата

document.location was originally a read-only property, although Gecko browsers allow you to assign to it as well. For cross-browser safety, use window.location instead.



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 14.11.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



SelenIT, Видимо, в целях совместимости, баги тоже унаследовались smile

Чтобы воспроизвести эффект я смасерил непритязательный тестик
Код

<?php
if(!empty($_POST['MAX_FILE_SIZE'])){
    // Это upload!!
    echo '<script type="text/javascript">top.upload_Complete();</script>';
    exit ;
}
?>
<iframe src='about:blank' id='uploadFrame' name='uploadFrame' style="display:none;"></iframe>

<form id="uploadForm" target="uploadFrame" action="" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="4000000" >
    <input type="file" title="Загружаем файл" name="file" onchange="this.form.submit();">
    <input type="submit" value="Submit" >
</form>

<form id="_goto" name="_goto" action="" method="get"></form>

<script type="text/javascript">
function upload_Complete(){
    alert('Complete');
    //document.location.reload();
    window.location.reload();
    //document.getElementById('_goto').submit();
}
</script>


Если просмотреть сие в FF, он скажет то, o чем я, собственно и говорил. Если раскоментировать последнюю строчку и удалить window.location.reload(), то FF ведет себя вполне прилично.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.