Как отключить кнопку назад в браузере
Как отключить кнопку НАЗАД в браузере (во всех браузерах)?
задан 07 июн '09, 01:06
Вы не владеете компьютерами своих пользователей или их браузерами. - Instance Hunter
Почему мы настроены враждебно к этому вопросу? Насколько нам известно, человек, задающий этот вопрос, уже знает, что это плохая практика юзабилити, но он просто следует требованиям или, может быть, просто хочет чему-то научиться. Почему бы нам просто не притвориться, что это гипотетический вопрос, и не ответить, как бы мы это сделали, ЕСЛИ бы нам пришлось делать что-то подобное? - thomasrutter
Некоторые вещи никогда не следует делать, независимо от желания их делать. Наличие необязательного требования для этого сразу говорит о том, что требования были установлены людьми, не имеющими отношения к бизнесу, что является гораздо более серьезной проблемой. - annakata
тьфу, я написал самый крутой комментарий, но потерял его, когда случайно нажал кнопку возврата. - Dan Williams
20 ответы
Этот вопрос очень похож на этот one.
Вам нужно принудительно истечь срок действия кеша, чтобы это работало. Поместите следующий код на свою страницу с кодом позади.
ответ дан 23 мая '17, 13:05
Не отключайте ожидаемое поведение браузера.
Сделайте так, чтобы ваши страницы учитывали возможность того, что пользователи вернутся на страницу или две назад; не пытайтесь повредить их программное обеспечение.
ответ дан 29 мар '14, в 07:03
Я согласен с Джонатаном, особенно с потоком перенаправляющей рекламы вредоносных программ, которая в настоящее время наводняет Интернет, они уже злоупотребляют системой предупреждений, чтобы затруднить уход со своих страниц, не давая им возможности фактически заблокировать вас на своей странице - МайкТ
ответ дан 29 мар '14, в 07:03
обратите внимание, что URL-адрес изменяется дважды: мы делаем это только для того, чтобы замаскировать реализацию, чтобы никто не увидел, что мы добавили «1». Так что на самом деле, когда пользователь щелкает назад, страница на мгновение повторно добавляет «№1» и снова удаляет его. Кстати, это не обязательно должно быть «1», это может быть любая строка. - Йоси Шашо
Проблема в том, что страница прокручивается вверх каждые 50 мс. Если у вас форма больше высоты окна, это сделает невозможным заполнение значений формы. - 3komma14
Спасибо большое. Это очень полезно для моей особенно интерактивной страницы на основе JavaScript, где прокрутка влево и вправо является частью механизма. Это помогает устранить проблему, связанную с жестом прокрутки в Mac OS X, который случайно возвращает пользователя на страницу (это очень просто сделать, если они уже прокручены до конца). - Иэн Коллинз
Другие использовали подход, чтобы сказать «не делай этого», но на самом деле это не отвечает на вопрос автора. Давайте просто предположим, что все знают, что это плохая идея, но нам все равно интересно, как это делается .
Один из подходов, которые я видел для этого, - это передача токена по каждому URL-адресу в приложении и в каждой форме. Маркер повторно создается на каждой странице, и как только пользователь загружает новую страницу, все токены с предыдущих страниц становятся недействительными.
Когда пользователь загружает страницу, страница будет отображаться только в том случае, если ей был передан правильный токен (который был предоставлен всем ссылкам / формам на предыдущей странице).
В онлайн-экзамене, когда у кандидата есть клик на кнопке запуска, я не хочу позволять ему вернуться (на предыдущие страницы), и он должен быть на одной странице, если он выполняет какие-либо действия, используя свойства браузера. После этого он нажимает кнопку отправки, выходя из этой страницы.
если кто-нибудь знает, дайте мне знать, как достичь этой концепции ……
Попробуйте этот скрипт
Также перейдите по этой ссылке . Эта ссылка содержит демонстрационный пример и код загрузки
Предполагая, что предыдущие страницы являются вопросами, я предлагаю, чтобы после того, как пользователь удалился от страницы, любой дальнейший доступ к этой странице будет недействительным. Это можно легко сделать, используя серверный язык и базу данных для отслеживания посещаемых пользователем страниц.
Обратите внимание, что некоторые браузеры выполняют «обновление» на предыдущей странице при выполнении обратной операции, а другие загружают их из кеша. Последний сделает страницу доступной, даже если вы отметили ее недоступной на сервере. Далее вы можете сделать недействительными любые действия, предпринятые на этой странице, как только они были признаны недействительными для доступа. Таким образом, даже если у пользователя была копия этой страницы, он ничего не может с этим поделать.
Кроме того, это экзамен, а JS – плохое место, чтобы поместить какую-то логику экзамена, так как его можно легко проверить и изменить. Вместо этого вы должны оставить все на сервере.
Вы можете использовать replace()
Попробуйте использовать следующую страницу, чтобы предотвратить разгрузку формы.
Или попробуйте разгрузить функцию и не допускайте разгрузки текущей страницы.
вы не можете фактически переопределить поведение браузера по умолчанию, это проблема безопасности среди браузеров.
другой практикой, которой вы можете следовать, является открытие вашей ссылки на страницу внутри window.open() . Но у него есть свои преимущества и недостатки. Глянь сюда
вам нужно заставить кэш истекать, чтобы это работало. Поместите следующий код на код страницы.
Не отключайте ожидаемое поведение браузера.
Сделайте ваши страницы обрабатывать возможность пользователей вернуться на страницу или две; не пытайтесь повредить их программное обеспечение.
Я придумал небольшой хак, который отключает кнопки "назад" с помощью JavaScript. Я проверил его на chrome 10, firefox 3.6 и IE9:
другие взяли подход, чтобы сказать:" не делайте этого", но это на самом деле не отвечает на вопрос плаката. Давайте просто предположим, что все знают, что это плохая идея, но нам все равно интересно, как это делается.
один подход, который я видел для это делается для передачи токена по каждому URL-адресу в приложении и в каждой форме. Маркер восстанавливается на каждой странице, и после загрузки новой страницы любые маркеры с предыдущих страниц становятся недействительными.
когда пользователь загружает страницу, страница будет показывать только, был ли передан правильный токен (который был передан всем ссылкам/формам на предыдущей странице).
онлайн-банкинг Моего банка является такой. Если вы используете кнопку назад, нет больше ссылок будет работать, и больше никаких перезагрузок страниц не может быть сделано-вместо этого вы видите уведомление, говорящее вам, что вы не можете вернуться, и вы должны начать все сначала.
конечно, я согласен, что в правило это очень плохая идея. но это уже достаточно ясно.
пока я сам ищу ответ, "Лучшая практика" есть. устаревший. Как и браузеры.(На самом деле браузеры-уродливые окаменелости)
лучшим / безопасным решением было бы для браузеров реализовать метод / запрос, где пользователь может предоставить странице возможность управлять интерфейсом.
Почему? Потому что для моего текущего проекта Я создаю 100% JavaScript встроенный и управляемый интерфейс.. И кнопка "назад" не имеет места в моем проекте, так как нет страницы изменение. (Т. е. кроваво быстро и без мигания страниц из-за обновления.. Так же, как реальное приложение!)
Я знаю, почему способность "highjack" интерфейс не существует, и я это понимаю. Но, по крайней мере, мы должны иметь возможность запросить его из браузера! Теперь это действительно было бы "лучшей практикой" без высоких опасностей.
но браузеры являются браузерами.. Я не ожидаю, что что-то произойдет в этом отношении.
Я искал тот же вопрос, и я нашел следующий код на сайте. Думал поделиться им здесь:
однако, как отметили выше пользователи, это никогда не является хорошей практикой и следует избегать по всем причинам.
Если вы полагаетесь на клиентскую технологию, ее можно обойти. Например, Javascript может быть отключен. Или пользователь может выполнить сценарий JS для работы с вашими ограничениями.
Я предполагаю, что вы можете сделать это только путем отслеживания на стороне сервера сеанса пользователя и перенаправления (как на сервере.Передача, а не ответ.Redirect) пользователь / браузер на нужную страницу.
было несколько различных реализаций. Существует флэш-решение и некоторые решения iframe/frame для IE. Проверьте это
BTW: есть много веских причин, чтобы отключить (или, по крайней мере, предотвратить 1 шаг) кнопку назад - посмотрите на gmail в качестве примера, который реализует хэш-решение, рассмотренное выше статья.
У меня также была та же проблема, используйте эту функцию Java script на Head tag или in , ее 100% работает нормально, не позволит вам вернуться.
глобально, отключение кнопки "назад" действительно плохая практика. Но в некоторых ситуациях функциональность кнопки "назад" не имеет смысла.
вот один из способов предотвратить нежелательную навигацию между страницами:
начальная страница (файл top.php ):
вторичная страница (файл secondary.php ):
даже я сталкивался с такой же ситуацией раньше. и не было никакой помощи. попробуйте эти вещи, возможно, они будут работать на вас
на странице входа tag:
в кнопке выхода я сделал это:
и на странице входа в систему я поместил фокус на текстовое поле имени пользователя следующим образом:
надеюсь, что это помогает. :) кто-то plz научит меня редактировать эту страницу.
Если вам нужно мягко подавить клавиши delete и backspace в вашем веб-приложении, чтобы при редактировании / удалении элементов страница не перенаправлялась неожиданно, вы можете использовать этот код:
попробуйте этот код. Вам просто нужно реализовать этот код на главной странице, и он будет работать для вас на всех страницах
проблема с Йоси Shasho'код заключается в том, что страница прокручивается вверх каждые 50 мс. Поэтому я изменил этот код. Теперь он отлично работает во всех современных браузерах, IE8 и выше
Я делаю онлайн-приложение викторины в php. Я хочу запретить пользователю возвращаться на экзамен. Я пробовал следующий скрипт, но он останавливает мой таймер. Что я должен делать?
Я включил исходный код. Таймер хранится в cdtimer.js
На этой странице перечислено несколько способов, которыми вы могли попытаться отключить кнопку возврата, но ни один из них не гарантирован:
В современном браузере это работает:
Это способ, которым я мог это сделать. Причудливое изменение window.location не сработало в chrome и safari. Бывает, что location.hash не создает запись в истории для chrome и safari. Так что вам придется использовать pushstate. Это работает для меня во всех браузерах.
Вы можете просто поставить небольшой скрипт и затем проверить. Это не позволит вам посетить предыдущую страницу. Это сделано в JavaScript.
Функция window.onunload срабатывает при попытке перейти на предыдущую или предыдущую страницу через браузер.
Надеюсь это поможет.
Я полагаю, что идеальное, но в то же время довольно простое решение, которое я использовал уже много лет.
Это в основном назначение окна «onbeforeunload» вместе с текущими событиями «mouseenter» / «mouseleave» документа, поэтому предупреждение срабатывает только тогда, когда щелчки находятся за пределами области действия документа (которая затем может быть либо кнопкой «назад», либо «вперед» браузера)
Я создаю одну HTML-страницу (index.html). Я также создаю один (mechan.js) внутри (скрипт) папку / каталог. Затем я размещаю весь свой контент внутри (index.html), используя теги form, table, span и div по мере необходимости. Теперь вот трюк, который заставит назад / вперед ничего не делать!
Во-первых, тот факт, что у вас есть только одна страница! Во-вторых, использование JavaScript с тегами span / div для скрытия и отображения контента на той же странице при необходимости с помощью обычных ссылок!
Это выглядит волосатым, но обратите внимание на имена функций и вызовы, встроенный HTML и вызовы id тега span. Это должно было показать, как вы можете вставить другой HTML в один тег span на одной странице! Как Back / Forward может повлиять на этот дизайн? Это невозможно, потому что вы прячете объекты и заменяете других на одной странице!
Как скрыть и отобразить? Здесь идет: Внутри функций в 'mechan.js' по мере необходимости, используйте:
Внутри index.html вызывайте функции через ссылки:
Надеюсь, у меня не болит голова. Извините, если я сделал :-)
Обычно плохая идея переопределять поведение веб-браузера по умолчанию. Сценарий на стороне клиента не имеет достаточных прав для этого по соображениям безопасности.
Есть несколько похожих вопросов,
Вы не можете отключить кнопку возврата браузера. Однако вы можете творить чудеса, используя свою логику, чтобы пользователь не смог вернуться назад, что создаст впечатление, будто оно отключено. Вот как, посмотрите следующий фрагмент.
Это в чистом JavaScript, поэтому он будет работать в большинстве браузеров. Также будет отключен ключ backspace , но ключ будет нормально работать внутри полей input и textarea .
Рекомендуемая настройка:
Поместите этот фрагмент в отдельный скрипт и включите его на страницу, где вы хотите, чтобы это поведение. В текущей настройке он выполнит событие onload DOM, которое является идеальной точкой входа для этого кода.
Протестировано и проверено в следующих браузерах,
В моем случае это был заказ на покупку. Поэтому я отключил кнопку. Когда пользователь нажал назад, кнопка все еще была отключена. Когда они щелкнули назад еще раз, а затем нажали кнопку страницы, чтобы перейти вперед. Я знал, что их заказ был отправлен и пропущен на другую страницу.
Вероятно, каждый современный SEO-специалист находится в постоянном поиске методов улучшения поведенческих факторов своего сайта. Мы думаем как увеличить конверсию страниц или хотя бы получать «долгие клики».
Google, спасибо за идею
В процессе такого поиска находился и я, когда наткнулся на один интересный комментарий Джона Мюллера из Google. В переводе на русский он звучит примерно так: “те, кто настраивает у себя на сайте отключение кнопки «назад» браузера, не получат ни выгоды, ни проблем при ранжировании в поиске Google. То есть, манипулирование кнопкой возврата в браузере не влечет за собой санкции Google.”, ссылка на саму речь.
Сопоставив дату этой речи Мюллера (10 февраля 2017) с датой выхода патента о поведенческих факторах в Google (12 марта 2019) я крепко усомнился в том что такая техника всё ещё не влияет на ранжирование. Настало время экспериментировать.
Описанный в статье метод относится к категории black hat SEO (черные методы продвижения). Ведь он вредит пользователям вашего сайта и пытается влиять на алгоритмы поисковых систем. Кейс выполнялся исключительно в академических целях.
Ожидаемое влияние блокировки
При этом в Google ситуация обратная, сайты из результатов поиска тут открываются в той же вкладке, что и сам поиск. То есть заблокировав кнопку «назад» мы запрещаем пользователю возвращаться в поиск. У такого пользователя есть три варианта дальнейшего действия.
Действие | Возможная причина |
---|---|
Остаться на сайте | Лучше поискать на сайте интересующую информацию. |
Закрыть сайт и не вернуться в поиск | На нашем или другом сайте пользователь уже нашел ответ на свой вопрос, либо вопрос не настолько важный. |
Закрыть сайт и вернуться в поиск | Пользователь всё ещё не нашел ответ на свой запрос. |
Согласитесь, получается лучше чем если бы он просто сразу вернулся поиск. Бонусом мы получаем то что в последнем случае возвращение в поиск займет какое-то время, за которое пользователь должен:
- закрыть вкладку,
- заново открыть поисковую систему,
- повторно ввести поисковый запрос.
Если всё это сработает, то в результате мы должны увидеть рост позиций по целевым запросам в Google.
Скрипт блокировки
Для блокировки будем использовать небольшую функцию, выполненную на чистом JavaScript. Вот её код:
var str = document.referrer;
if(str.indexOf('google.') + 1) function preventBack()
setTimeout("preventBack()", 0);
window.onunload = function () ;
>;
В функции мы считываем значение переменной referrer (она показывает откуда пришел пользователь к нам на сайт) и если она содержит подстроку «google.», то запускаем постоянное нажатие на кнопки «вперед» браузера.
У данного скрипта есть и недостаток - при переходе между страницами сайта он может возвращать нас при клике на кнопку «назад» на страницу входа, но после этого произойдет переход «вперед» к внутренней странице на которую мы забрели.
Результат
Для исследования я взял две площадки - статейный сайт и агрегатор, на обоих сайтах до этого уже давно ничего не делалось. После внедрения блокировщика на них также ничего не делалось.
Пример использования скрипта на одном из сайтов:
В результате спустя 4 месяца поисковый трафик Google для агрегатора вырос на 74,4%, а для статейного сайта на 77,6%.
Данные показаны в относительных величинах (по просьбе моих партнеров), но речь идет о росте на несколько тысяч переходов с Google в месяц.
Так как оба сайта монетизируются через AdSense, от роста трафика вырос и доход. Но, приятным бонусом ещё является то что пока пользователь пытается вернуться назад у нас на сайте - он смотрит кучу рекламных объявлений.
В итоге средний расчетный доход по обоим сайтам в AdSense вырос на какие-то нереальные 216%. Правда из-за того что на одном сайте как-то слишком резко вырос доход на тысячу показов, мне кажется правильнее привязываться не к доходу, а к количеству показов рекламы. А количество показов рекламы выросло на 135%!
Что с этим делать
Пожалуй, ничего. Метод, конечно, очень интересный, но перед его использованием стоит крепко подумать: стоит ли выжигать лояльность посетителей своего сайта ради сомнительных результатов в SEO и роста дохода? Думаю, нет.
Остаётся вопрос к представителям Google, почему за такое сайт не получает наложение санкций. Может всё-таки пора их внедрять?
И на этом моменте статья должна была закончиться, но пока я её размещал наткнулся на тестирование в Google чекбокса «Открывать результаты в новой вкладке».
Значит, поисковая система уже знает проблему и собирается исключить возможность такой манипуляции. Будем надеяться что это тестирование покажет положительный результат и Google все-таки сделает бессмысленной блокировку кнопки «назад» в браузере.
Читайте также: