Различия в Internet Explorer и Firefox при динамической загрузке контента, переходе вперед и назад - PullRequest
6 голосов
/ 14 января 2010

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

Это отлично работает. Однако после динамической загрузки контента, если я перейду на другую веб-страницу, а затем вернусь назад, в Internet Explorer загруженный контент исчезнет, ​​то есть страница вернется к первоначально извлеченной странице. Однако в Firefox (и в Opera) загруженный контент все равно будет там, то есть страница будет выглядеть так же, как и до того, как я от нее ушел.

Поведение Firefox - это желаемое поведение в моем случае, так как пользователь будет регулярно переходить на подстраницы и возвращаться на главную страницу. Поэтому у меня вопрос: можно ли заставить Internet Explorer проявить такое поведение или есть какие-то возможные обходные пути для получения желаемого результата?

Ответы [ 3 ]

3 голосов
/ 15 января 2010

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

Для каждого динамически загружаемого элемента у меня также есть скрытое поле ввода, в котором я "кэширую" загруженное значение. Затем у меня есть функция TransferFromCache (), которая копирует значения из каждого скрытого поля ввода в соответствующий элемент. Эта функция запускается при инициализации страницы, которая, в случае IE, при загрузке страницы И каждый раз, когда вы возвращаетесь обратно на страницу.

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

2 голосов
/ 14 января 2010

Вот статья о сохранении состояния в переменных сеанса , которая может помочь

2 голосов
/ 14 января 2010

Я не думаю, что есть способ заставить IE эмулировать FF таким образом.Причина в том, что это связано с довольно фундаментальными аспектами браузеров.FF использует механизм истории страниц под названием «Быстрое кэширование DOM», который (из моего ограниченного понимания) в основном означает, что когда он помещает страницу в историю браузера, он сохраняет текущее DOM (то есть текущее состояние страницы) в сериализованномформат, который означает, что когда страница перезагружается из истории, состояние сохраняется, и FF может сделать это намного быстрее, так как большая работа уже выполнена (анализ HTML в DOM и т. д.).Для сравнения, IE просто сохранит исходный HTML-код как файл истории и перезагрузит его при навигации по истории.

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