2012-04-26 1 views
6

У меня есть <select> тег, который содержит один элемент <option>:Почему Chrome не отображает выбранный элемент <option> после использования кнопки «Назад»?

<select id="someselect"> 
    <option value="2">B</option> 
</select> 

Сингл <option> позже заменен с помощью JQuery. Новый список опций всегда содержит старую опцию:

selected = $('#someselect').val(); 
$('#someselect').html('<option value="1">A</option><option value="2">B</option>').val(selected); 

Это работает как ожидалось. Однако при переходе от веб-страницы в Google Chrome и нажатии кнопки «Назад» происходит нечто странное. Тег select возвращается в исходное состояние (имеет смысл), но единственный элемент <option> не выбран!

В чем причина такого поведения в Chrome?

Я создал минимальный рабочий пример: http://dl.dropbox.com/u/27566470/backdemo.html
Изначально есть только один <option>. Сначала нажмите «щелчок», чтобы заменить параметры (но сохраните параметр «B»), затем нажмите «Google», чтобы перейти от него, а затем используйте кнопку «Назад» в Chrome, чтобы увидеть тег <select> только с одним параметром, который не выбрано.

Редактировать: уточнить, мне не интересно, как это исправить. Мне любопытно, почему Chrome работает так. Обслуживание оригинальной (немодифицированной) DOM после использования кнопки «Назад» имеет смысл, но почему выбран единственный вариант выбора?

+1

вы щелкаете назад, ваша страница получает 'refreshed', вы можете получить его с помощью' GET' метод в 'URL' и сделать прогресс или ' sessions' – Rafee

ответ

4

Чтобы ответить на мой собственный вопрос, кажется, это ошибка Chromium. Я подал ошибку, которая в настоящее время подтверждается и отбирали раненых: http://code.google.com/p/chromium/issues/detail?id=125509
Будем надеяться, что это должно быть исправлено в будущем :)

+0

Добавление атрибута autocomplete = "off" для исправления этой проблемы для меня. – Boykodev

2

Потому что, когда браузер назад кнопка используется она используется версия кэш-страницы, но в вашей странице есть динамические данные, которые заблудились, так браузер не находит ранее выбранное значение, Вы можете установить его с помощью JQuery:

$(document).ready(function(){ 
    $('#someselect').val('0'); 
}); 
2

Поскольку каждый браузер, который перемещается за пределы документа (# все еще находится внутри), при навигации по ним загружает кешированную версию сервера, а Chrome изменяет DOM при выборе опции, отбирающей атрибут selected для выбранного элемента option и когда вы возвращаетесь, он снова загружается с помощью selected

+0

Но дело в том, что при использовании кнопки «Назад» он НЕ выбирает оригинальный выбранный элемент (он ничего не выбирает). При использовании обычного обновления на веб-сайте все работает так, как ожидалось. – Intru

+0

nope, когда пользователь снова возвращает DOM нагрузку с свойством 'selected' на' B' –

+0

Да, тег опции имеет выбранное свойство, но не выбран: это проблема. Firefox кэширует всю измененную DOM (так что с опциями «a» и «b») и показывает это. Chrome показывает исходный DOM, но он не выбирает оригинальный вариант. – Intru

Смежные вопросы