Назад кнопка браузер кнопка назад
Я делаю онлайн-приложение викторины в php. Я хочу запретить пользователю возвращаться на экзамен. Я пробовал следующий скрипт, но он останавливает мой таймер. Что я должен делать?
Я включил исходный код. Таймер хранится в cdtimer.js
Существует множество причин, по которым отключение кнопки «назад» не будет работать. Лучше всего предупредить пользователя:
Эта страница не перечислен ряд способов , которыми Вы могли бы попытаться отключить кнопку назад, но никто не гарантирует:
Вы должны проверить в своем PHP-коде, был ли ответ уже отправлен, и если так, отклоните его.Как правило, это плохая идея, игнорирующая поведение веб-браузера по умолчанию. Сценарий на стороне клиента не имеет достаточных прав для этого по соображениям безопасности.
Есть несколько похожих вопросов,
Вы не можете отключить кнопку возврата браузера. Однако вы можете творить чудеса, используя свою логику, чтобы пользователь не смог вернуться назад, что создаст впечатление, будто оно отключено. Вот как, посмотрите следующий фрагмент.
Это в чистом JavaScript, поэтому он будет работать в большинстве браузеров. Это также отключило бы клавишу возврата, но ключ будет нормально работать внутри input полей и textarea .
Рекомендуемая настройка:
Поместите этот фрагмент в отдельный скрипт и включите его на страницу, где вы хотите, чтобы это поведение. В текущей настройке он выполнит onload событие DOM, которое является идеальной точкой входа для этого кода.
Протестировано и проверено в следующих браузерах,
да, правда, это будет работать, но я, если мне придется что-то вспомнить из памяти, когда у меня было это на первом месте . поток не работал должным образом в Chrome, как в других браузерах. location.hash Изначально Chrome вернул пустое место, поэтому я сделал это так. Это могло бы быть лучше, но 50 мсек один раз не стоили мне много, поэтому я оставил это там. Я создал файл .js в соответствии с рекомендациями и включил файл js в свой код, используя следующее: <script src = "./ javascript / noback.js"> </ script> Но я все еще могу выполнить возврат (используя Safari). Чего мне не хватает? Эта библиотека была добавлена так же, как и другие библиотеки, которые я использую, так что включение - это хорошо.Я столкнулся с этим, мне нужно решение, которое работало бы корректно и «красиво» на различных браузерах, включая Mobile Safari (iOS9 на момент публикации). Ни одно из решений не было совершенно правильным. Я предлагаю следующее (протестировано на IE11, FireFox, Chrome & Safari):
Обратите внимание на следующее:
Это правильный ответ. Отлично работает на Chrome, IE 11, Firefox и Edge. Это должен быть принятый ответ, он кроссплатформенный и просто отлично работает. в jsp sevlet После отправки я обновляю страницу. страница не отображается (ошибка) Лучшее решение на данный момент, но, вероятно, не работает в старых браузерах Идеальное решение для современных браузеров. Я объединился с ответом @ Rohit416 для поддержки более старого браузера, просто используя условие typeof (history.pushState) === «функция» работает гладко. Это работает, но сбрасывает все данные, введенные в текстовые поля. Можно ли предотвратить очистку? У меня это работало на Firefox, но не на Chrome (версия 36.0.1985.143) Это сработало для меня. Просто измените «кнопку без возврата» на «window.top.location.pathname + window.top.location.search», и она останется именем страницы, на которой вы находитесь, даже в обновлении Я исследовал много случаев, и это лучшее решение для одностраничного сайта Это очень плохое решение, потому что вы меняете URL-адрес, поэтому, если вы несколько раз нажмете назад и вперёд, Chrome перенаправит вас на несуществующий путьДля события «Ограничить браузер назад»
Это прекрасно работает на Chrome !, почему люди не голосуют, так как это лучший ответ? я только что проверил это, используя ОС Windows 10 в следующих браузерах (прекрасно работает) Chrome версии 74.0.3729.108 (официальная сборка) (64-разрядная версия) Chrome Canary версия 76.0.3780.0 (официальная сборка) канарская (32-разрядная версия) Chromium версия 66.0. 3355.0 (Developer Build) (64-разрядная версия) Firefox 66.0.3 (64-разрядная версия) EDGE IE 11 Safari 5.1.7 @ TarıkSeyceri, потому что это работает только в браузерах, которые а) поддерживают API истории; б) страница фактически использует API истории для управления состоянием Хотя это может быть правильным ответом, вы, скорее всего, поможете другим, объяснив, что делает код и как он работает. Ответы только на код, как правило, получают меньше положительного внимания и не так полезны, как другие ответы. Протестировано на Chrome, Firefox, IE и Edge. Это работает хорошо. Ты спас меня.Это способ, которым я мог это сделать. Причудливое изменение window.location не сработало в chrome и safari. Бывает, что location.hash не создает запись в истории для chrome и safari. Так что вам придется использовать pushstate. Это работает для меня во всех браузерах.
Это не работает в IE9 и ниже, pushState не поддерживается. Отлично. Это хороший подход и работает практически во всех последних браузерах. Прекрасно работает в более поздних версиях IE. Просто поместите прямо в документ. $(document).ready(function () < . >);Этот javascript не позволяет любому пользователю вернуться (работает в Chrome, FF, IE, Edge)
Попробуйте с легкостью:
Этот код протестирован с последними браузерами Chrome и Firefox.
Очень простая и понятная функция, позволяющая ломать стрелку назад, не мешая при этом странице.
Преимущества:
- Загружает мгновенно и восстанавливает оригинальный хеш, поэтому пользователь не отвлекается на видимые изменения URL.
- Пользователь все еще может выйти, нажав 10 раз назад (это хорошо), но не случайно
- Нет вмешательства пользователя, как другие решения, использующие onbeforeunload
- Он запускается только один раз и не мешает дальнейшим манипуляциям с хешем, если вы используете его для отслеживания состояния
- Восстанавливает оригинальный хеш, поэтому почти невидим.
- Использует setInterval так, чтобы не сломать медленные браузеры и всегда работает.
- Чистый Javascript, не требует истории HTML5, работает везде.
- Ненавязчивый, простой и хорошо сочетается с другим кодом.
- Не использует unbeforeunload который прерывает пользователя модальным диалогом.
- Это просто работает без суеты.
Примечание: некоторые другие решения используют onbeforeunload . Пожалуйста , не используйте onbeforeunload для этой цели, при котором пользователи открывают диалоговое окно, когда пользователи пытаются закрыть окно, нажать клавишу Backarrow и т. Д. Такие модальности, как onbeforeunload правило, подходят только в редких случаях, например, когда они действительно вносили изменения на экране и убежище. не спас их, не для этой цели.
Как это устроено
Вот и все. Больше не надо возиться, нет мониторинга фоновых событий, больше ничего.
Используйте его за одну секунду
Чтобы развернуть, просто добавьте это в любом месте на вашей странице или в вашем JS:
Сооснователь системы мобильной аналитики Mixpanel Сухаил Доши — о том, как измерять продукт.
Я основал Mixpanel, написав первую строку кода в октябре 2008 года. Мне тогда было лет 20, жил с родителями. И спустя десять лет в компании работало уже более 300 сотрудников. Получили немного денег. Сейчас у нас около 7000 платёжеспособных клиентов, и мы приближаемся к $100 млн годового дохода.
Мы создаём графики, помогаем измерять то, что происходит с продуктом, когда кто-то приглашает друга в приложение. Определяем воронку, уровень конверсии и удержания пользователей.
- Понятен ли пользователям ваш продукт? Первые полтора года мы в Mixpanel изрядно помучились над этим. Пришлось многое изменить.
- Хорошо, пользователи понимают продукт. Но начиная уже с первого дня пользования, считают ли они программу достаточно простой в обращении? Это бесконечная задача, которую вы берёте на себя, когда основываете компанию и начинаете поставлять свой продукт.
- И наконец, пользуются ли люди вашим продуктом снова?
- Количество посетителей.
- Сколько пользователей зарегистрировались.
- Сколько поняли ценность продукта.
- Удержание клиента.
- Количество пользователей, поделившихся продуктом.
Это и есть ваши рычаги управления.
Но даже крупные и средние компании допускают ошибки в определении этих показателей.
Так, например, выглядела главная страница Mixpanel в 2009 году. Наш логотип с тех пор изменился. Дизайн создан мной. В тексте на сайте масса ошибок, орфография всегда была моей проблемой.
Почему-то я думал, что я знаю, каким должен быть слоган: «Метрики, которые заставят вас пускать слюни». Подозреваю, потому что эти графики и диаграммы казались мне такими привлекательными по сравнению со всем остальным. Я считал, именно это будет ценностью продукта нашей компании.
Конечно это неправильно. Тогда у меня не было пользователей, я не знал, кому нужен мой продукт. Я нацеливался на все рынки сразу. Все ошибки, которые можно сделать в лендинге, были и в моём сайте. Единственное, что я сделал правильно, — кнопку регистрации.
После огромной работы, многих итераций, разговоров с клиентами и измерений страница превратилась в это. Тут я сделал правильный логотип. Кнопка подписки огромная и жёлтая. К этому времени мы перешли от «Метрик, которые заставят вас пускать слюни» к «Действия говорят громче, чем просмотры страниц».
Вы видите, как велика разница. Причина в том, что нам как компании нужно было ответить на главную претензию пользователей: «Круто, но я не понимаю, чем вы отличаетесь от Google Analytics». Вышло так, что новый слоган на главной странице продержался в течение следующих пяти лет. Он выделял нашу компанию как место, где мы измеряем вовлечённость.
Мы сделали что-то новое. Google — больше про просмотры, мы — про то, что люди делали в вашем приложении, и это сработало. Потом мы пытались стимулировать клиентов оценивать пользу своего сайта.
Как определить ясность продукта:
Обычно на старте разработчики тратят много сил, чтобы создать множество функций, которые, по их мнению, будут важны и удобны для пользователей.
Но если вы своим основным инструментом не попали в точку, то шанса продемонстрировать остальные «фишки» просто не будет. Например, молодому сайту просто не нужна кнопка «Забыл пароль», так как зарегистрировавшихся пользователей ещё очень мало.
Однажды я разговаривал с экспертом YC Робби Уолкером. Он сказал, что в PowerPoint раньше не было даже кнопки «Сохранить», потому что никто из пользователей не спрашивал: «Слушайте, а могу я это сохранить?». То есть они хотели сначала посмотреть, будет ли кто-то вообще пользоваться презентациями PowerPoint.
И первые полтора года у нас в Mixpanel не было кнопки «Забыл пароль», потому что это было не в приоритете.
Со временем мы стали получать много запросов от пользователей. Когда я проверил журнал действий, то увидел, что люди переходили на вкладку регистрации раз пять. Меня это удивило. Я подумал, что это потому, что они не могут зарегистрироваться. В итоге мы сделали кнопку. Если бы не ввели эту функцию, то просто потеряли бы клиентов.
К слову, некоторые даже после этого не нажимали кнопку «Забыл пароль», они продолжали попытки ввода. Для этого мы сделали как в Facebook — после третьего неудачного раза входа на сайт на почту приходит письмо: «Перейдите по ссылке, чтобы зарегистрироваться. Не беспокойтесь за пароль или смену пароля, просто залогиньтесь».
Прекрасный пример удобного в использовании продукта — Google. Вы открываете сайт, печатаете и сразу же получаете результат.
Более сложный пример — Airbnb. Там потребуется около десяти шагов, чтобы найти желаемое. Мы работали с Airbnb какое-то время, помогали им оптимизировать сайт для пользователя.
У них сложная структура: надо заполнить форму, вам выдают результаты, затем надо выбрать среди результатов наиболее подходящий, сравнить цены, интерьер и прочее, в конце — забронировать место.
Airbnb нужно было понять:
- как описать предложение, что людям полезно;
- как сделать процесс отбора и бронирования быстрее и легче.
Сейчас сайт Airbnb выглядит так. Теперь достаточно ответить на простые вопросы на главной странице — и всё.
Это выглядит просто, но понять, что такой подход — то, что нужно, — действительно трудно. Чтобы прийти к сегодняшнему решению, компания, возможно, меняла дизайн раз 50.
Воронка — главный инструмент для измерения удобства сайта. Вы можете оценить, как много людей переходят от лендинга к подписке, смотрят видео на сайте, открывают поиск и так далее.
Последнее — скорость. Как быстро пользователь «войдёт» в продукт. Это многие не проверяют. Этот показатель зависит от вида бизнеса. Иногда медленно — это хорошо. В Mixpanel мы над этим долго думали.
Это одна из метрик, которую часто игнорируют большинство стартапов. Из-за этого умирают многие компании. Продемонстрирую на графике.
Я называю его эффектом плавника акулы, потому что кривая похожа на рыбий плавник в воде.
Когда вы начинаете продвигать свой продукт в Facebook или Instagram, получаете массу пользователей — вроде бы всё хорошо. Проблема в том, что зачастую компании не думают об удержании и так же быстро теряют клиентов, как и получили. А получить новых пользователей становится сложнее, а если вы потеряете всех — останется только перезапускать продукт.
Важно отслеживать вернувшихся пользователей за длительные периоды времени: месяц и более. Полезна и следующая метрика — количество ежедневных активных пользователей.
Сколько продуктов вы используете каждый день? Если вы просто посмотрите на телефон и различные приложения на экране, то поймёте, что это очень жёсткая метрика. Мы заметили, что есть чёткая связь между этим показателем и количеством отказов — пользователи перестают платить за продукт.
Если ваш отток выручки составляет 7% в месяц, вы можете подумать: «Здорово, у меня остаётся 93% всей суммы». Проблема в том, что это 7% только ежемесячного оттока, и если вы посчитаете отток за 12 месяцев, то окажется, что вы теряете 58% своего дохода в год.
Как только ваш основной доход достигает высокого уровня, становится действительно сложно успевать всё, и у вас выходит такая длинная дуга, похожая на эффект плавника акулы. В итоге получается медленный рост на протяжении четырёх или пяти лет, если компания способна получать новых пользователей.
Когда у нас было около десяти клиентов, я их всех просто добавил в общий чат в Google+. Сейчас можно использовать любой другой мессенджер. Тогда мы использовали вертикальную воронку продаж, но обратили внимание на конкурентов, у которых воронка горизонтальная.
Чтобы решить, какой вариант лучше, я сделал грубые версии нескольких интерфейсов и опросил пользователей в чате. Большинство проголосовало за горизонтальную воронку.
Также с помощью отзывов мы поняли, что наши основные пользователи — это стартапы. У нас не было продукта, который мы можем предложить крупным компаниям, поэтому работали только с целевой аудиторией.
Для этого я применял одну уловку. Мы предоставляли сервис за деньги. Если клиент говорил, что продукт его не устраивает, то возвращали деньги, позволяя пользоваться бесплатно. Так как обратная связь была важнее прибыли.
Разговор с клиентами не всегда может помочь решить проблему, но порой от людей вы получите больше информации, чем от графиков и схем. Записывайте отзывы пользователей и анализируйте их.
Одна из самых больших ошибок, связанных с аналитикой, это всё усложнять. Например, ввести сложную систему аналитики с 30 показателями. У меня тоже был такой опыт, и это не сработало, в итоге ты просто не понимаешь, за чем следить. Такой подход только запутывает.
Метрика «полярной звезды», которую я выбрал в этом случае, — это сосредоточиться на одном показателе, который компания хочет достичь. Если этот показатель уходит южнее — компании грозит провал. Если показатель идёт вверх, вы сделаете огромную вмятину во вселенной.
Я не говорю, что вы должны придерживаться ей всегда, но попробуйте работать так полгода. Вы можете узнать, что на самом деле эта метрика вам не подходит, попробуете другую.
Распечатайте результаты и повесьте в офисе, пусть все смотрят и думают: «Показатель упал. Что нам с этим делать?». Понять это — самое сложное. Здесь вы начнёте измерять воронку и анализировать, что удерживает, привлекает пользователей. Но не пытайтесь объять необъятное.
Общественная онлайн-школа стартапов Russol открыла приём заявок стартапов на осенний поток акселерации и запись на публичные лекции. На лекциях узнаете, как и с чего стартовали ИТ-компании вроде YouDo, Kabanchik, «Флакон», Cinemood. Поймёте, где вы сами допускаете ошибку и какой опыт можно перенять, создавая и масштабируя бизнес, в том числе в другие страны. Подав заявку на экспертную прокачку, узнаете, что о вашей идее и стартапе думают эксперты, повысите шансы: получить инвестиции, стать зрелыми для фондов вроде Y Combinator, получить дополнительный PR, познакомиться с коллегами, найти ментора.
Изучите сочетания клавиш, чтобы быстрее и эффективнее пользоваться браузером Chrome.
Windows и Linux
Ниже приведен список быстрых клавиш для работы с адресной строкой.
Действие | Сочетание клавиш |
Открыть параметры печати текущей страницы | Ctrl + P |
Открыть параметры сохранения текущей страницы | Ctrl + S |
Обновить текущую страницу | F5 или Ctrl + R |
Обновить текущую страницу без учета кешированного контента | Shift + F5 / Ctrl + Shift + R |
Остановить загрузку страницы | Esc |
Перейти от одного интерактивного элемента страницы к следующему | Tab |
Перейти от одного интерактивного элемента страницы к предыдущему | Shift + Tab |
Открыть сохраненный на компьютере файл в Chrome | Нажмите Ctrl + O и выберите файл |
Просмотреть HTML-код текущей страницы (без возможности редактирования) | Ctrl + U |
Добавить текущую веб-страницу в закладки | Ctrl + D |
Добавить все открытые вкладки в отдельную папку закладок | Ctrl + Shift + D |
Включить или отключить полноэкранный режим | F11 |
Увеличить масштаб страницы | Ctrl и + |
Уменьшить масштаб страницы | Ctrl и - |
Восстановить масштаб страницы по умолчанию | Ctrl + 0 |
Прокрутить веб-страницу вниз (одно нажатие – один экран) | Пробел / PgDn |
Прокрутить веб-страницу вверх (одно нажатие – один экран) | Shift + Пробел / PgUp |
Перейти к верхней части страницы | Home |
Перейти к нижней части страницы | End |
Прокрутить страницу по горизонтали | Удерживая Shift, прокрутите колесо мыши |
Установить курсор перед предыдущим словом в текстовом поле | Ctrl + Стрелка влево |
Переместить курсор к следующему слову | Ctrl + Стрелка вправо |
Удалить предыдущее слово в текстовом поле | Ctrl + Backspace |
Открыть домашнюю страницу в текущей вкладке | Alt + Home |
Восстановить исходный масштаб страницы | Ctrl + 0 |
Ниже перечислены быстрые клавиши, которые используются в сочетании с движениями мыши.
macOS
Навигация с помощью клавиатуры включена по умолчанию в системных настройках macOS Catalina и более поздних версий.
Совет. Чтобы выделить текстовые поля или пункты списка с помощью клавиатуры, нажмите ⌘ + F7.
Действие | Сочетание клавиш |
Открыть новое окно | ⌘ + N |
Открыть новое окно в режиме инкогнито | ⌘ + Shift + N |
Открыть новую вкладку и перейти на нее | ⌘ + T |
Открыть закрытые вкладки в порядке закрытия | ⌘ + Shift + T |
Перейти на следующую открытую вкладку | ⌘ + Option + Стрелка вправо |
Перейти на предыдущую открытую вкладку | ⌘ + Option + Стрелка влево |
Перейти на определенную вкладку | ⌘ + 1 – ⌘ + 8 |
Перейти на последнюю вкладку | . |
Открыть предыдущую страницу, просмотренную в текущей вкладке | ⌘ + [ или ⌘ + Стрелка влево |
Открыть следующую страницу, просмотренную в текущей вкладке | ⌘ + ] или ⌘ + Стрелка вправо |
Закрыть текущую вкладку или всплывающее окно | ⌘ + W |
Закрыть текущее окно | ⌘ + Shift + W |
Уменьшить размер окна | ⌘ + M |
Свернуть Google Chrome | ⌘ + H |
Выход | ⌘ + Q |
Ниже приведен список быстрых клавиш для работы с адресной строкой.
Нажмите на стрелку вниз, чтобы выделить нужную область, затем нажмите клавиши Shift + Fn + Delete
Используйте удаление вперед: на ноутбуке нажмите fn-Delete
Действие | Сочетание клавиш |
Открыть параметры печати текущей страницы | ⌘ + P |
Открыть параметры сохранения текущей страницы | ⌘ + S |
Открыть диалоговое окно "Параметры страницы" | ⌘ + Option + P |
Обновить текущую страницу без учета кешированного контента | ⌘ + Shift + R |
Остановить загрузку страницы | Esc |
Перейти от одного интерактивного элемента страницы к следующему | Tab |
Перейти от одного интерактивного элемента страницы к предыдущему | Shift + Tab |
Открыть сохраненный на компьютере файл в Google Chrome | Нажмите ⌘ + O и выберите файл |
Просмотреть HTML-код текущей страницы (без возможности редактирования) | ⌘ + Option + U |
Открыть консоль JavaScript | ⌘ + Option + J |
Добавить текущую веб-страницу в закладки | ⌘ + D |
Добавить все открытые вкладки в отдельную папку закладок | ⌘ + Shift + D |
Включить или отключить полноэкранный режим | ⌘ + Ctrl + F |
Увеличить масштаб страницы | ⌘ и + |
Уменьшить масштаб страницы | ⌘ и - |
Восстановить масштаб страницы по умолчанию | ⌘ + 0 |
Прокрутить веб-страницу вниз (одно нажатие – один экран) | Пробел |
Прокрутить веб-страницу вверх (одно нажатие – один экран) | Shift + пробел |
Искать в Интернете | ⌘ + Option + F |
Установить курсор перед предыдущим словом в текстовом поле | Option + Стрелка влево |
Установить курсор в начало следующего слова в текстовом поле | Option + Стрелка вправо |
Удалить предыдущее слово в текстовом поле | Option + Delete |
Открыть домашнюю страницу в текущей вкладке | ⌘ + Shift + H |
Восстановить исходный масштаб страницы | Command + 0 |
Ниже перечислены быстрые клавиши, которые используются в сочетании с движениями мыши.
Может кто-нибудь указать мне пример кросс-браузерного кода (Firefox, Opera, Safari, IE, . ), который решает эту проблему? Я знаком с pageshow событием Firefox, но, к сожалению, ни Opera, ни Safari не реализуют это.
@romkyns: ваш комментарий не имеет отношения к этому вопросу. Когда браузеры не восстанавливают состояние JS / DOM, они запускают событие загрузки.Ребята, я обнаружил, что JQuery имеет только один эффект: страница перезагружается при нажатии кнопки назад. Это не имеет ничего общего с « готов ».
Как это работает? Ну, JQuery добавляет прослушиватель событий onunload .
По умолчанию это ничего не делает. Но почему-то это вызывает перезагрузку в Safari, Opera и Mozilla - независимо от того, что содержит обработчик событий.
Не можете в это поверить? Попробуй это:
Вы увидите похожие результаты при использовании JQuery.
Вы можете сравнить с этим без onunload
Очень хорошо . хотя это недокументированная функция / ошибка, хотя и может просто перестать работать в будущих версиях браузера, но это все еще интересно. Это также работает (не забудьте про часть onunload = "", иначе не будет работать на ff3): <body onload = "alert ('onload');" onunload = ""> Это связано с тем, что браузер предполагает, что страница не кэшируется, если у нее есть onunload обработчик (страница уже все уничтожила; зачем ее кэшировать?). Кажется, что ответ не работает в современных браузерах - проверено в последних версиях Chrome и Opera это не работает в iPad Safari . пожалуйста, снимите отметку как ответload Событие не должно огня , когда страница загружается из этого bfcache. Например, если вы создали свой пользовательский интерфейс в обработчике «load», и событие «load» было запущено один раз при начальной загрузке и во второй раз, когда страница была перезагружена из bfcache, страница в итоге получит дубликаты элементов интерфейса.
По этой же причине добавление обработчика «unload» останавливает сохранение страницы в bfcache (что замедляет переход к ней) - обработчик unload может выполнять задачи очистки, которые могут привести страницу в нерабочее состояние.
Для страниц, которые должны знать, когда они перемещаются назад или обратно, Firefox 1.5+ и версия Safari с исправлением для ошибки 28758 поддерживают специальные события, называемые «pageshow» и «pagehide».
Это очень круто. Сейчас я нахожусь в ситуации, когда мои манипуляции с dom не сохраняются в bfcache. Есть ли ситуации, когда вы могли бы ожидать этого? @Benson: возможные причины, по которым Firefox не будет сохранять вашу страницу в bfcache, перечислены на странице dev.mo, на которую я ссылался. Я не думаю, что возможно сохранить страницу в bfcache, но определенное состояние DOM не будет сохранено. @Greg: вы имеете в виду разработчика, управляющего страницей? Запустите AJAX-запрос от слушателя страниц. Любые идеи о том, как использовать jQuery и получить быструю поддержку bfcache?Я столкнулся с проблемой, что мой js не выполнялся, когда пользователь нажимал назад или вперед. Сначала я решил остановить кеширование браузера, но, похоже, это не проблема. Мой javascript был настроен на выполнение после загрузки всех библиотек и т. Д. Я проверил это с помощью события readyStateChange.
После некоторого тестирования я обнаружил, что readyState элемента на странице, где был нажат назад, не «загружен», а «завершен». Добавление || element.readyState == 'complete' к моему условному заявлению решило мои проблемы.
Просто подумал, что поделюсь своими выводами, надеюсь, они помогут кому-то еще.
Изменить для полноты
Мой код выглядел следующим образом:
В приведенном выше примере кода переменной сценария был недавно созданный элемент сценария, который был добавлен в DOM.
Где ты это добавил? И как вы получили что-нибудь, чтобы выстрелить после того, как пользователь отвечает? Пожалуйста, покажите нам код! Что вы имеете в виду, когда говорите «мое условное утверждение»?Я проверил это в Opera 9.5, IE7, FF3 и Safari, и это работает во всех из них.
Очевидно, это было какое-то время (около 5,5 лет), но стоит отметить, что ваша ссылка не работает. Это решение не работает для меня. У меня есть эта проблема в последнем Firefox (45.0.1)Я не мог заставить приведенные выше примеры работать. Я просто хотел вызвать обновление определенных измененных областей div при возврате на страницу с помощью кнопки назад. Уловка, которую я использовал, состояла в том, чтобы установить скрытое поле ввода (называемое «грязным битом») в 1, как только области div изменились от оригинала. Скрытое поле ввода на самом деле сохраняет свое значение, когда я нажимаю назад, поэтому при загрузке я могу проверить этот бит. Если он установлен, я обновляю страницу (или просто обновляю div). Однако при первоначальной загрузке этот бит не установлен, поэтому я не трачу время на загрузку страницы дважды.
Какой браузер не работает с pagehow, что это делает?Если я правильно помню, то добавление события unload () означает, что страница не может быть кэширована (в прямом / обратном кэше) - потому что ее состояние изменяется / может измениться, когда пользователь уходит. Так что - небезопасно восстанавливать состояние последней секунды страницы при возврате к ней путем навигации по объекту истории.
Читайте также: