Отключить кнопку возврата браузера - PullRequest
95 голосов
/ 07 июня 2009

Как отключить кнопку BACK браузера (в разных браузерах)?

Ответы [ 20 ]

1 голос
/ 01 февраля 2018

Попробуйте этот код. Работал на меня. Он в основном меняет хеш, как только загружается страница, которая изменяет страницу недавней истории, добавляя «1» в URL. Поэтому, когда вы нажимаете кнопку «Назад», она перенаправляет на одну и ту же страницу каждый раз.

 <script type="text/javascript">
    var storedHash = window.location.hash;
    function changeHashOnLoad() { window.location.hash = "1";}
    window.onhashchange = function () {
        window.location.hash = storedHash;
    }
</script>

<body onload="changeHashOnLoad(); ">

</bod>
0 голосов
/ 05 декабря 2017
<script>
    $(document).ready(function() {
        function disableBack() { window.history.forward() }

        window.onload = disableBack();
        window.onpageshow = function(evt) { if (evt.persisted) disableBack() }
    });
</script>
0 голосов
/ 12 ноября 2015

Кажется, это сработало для нас.

history.pushState(null, null, $(location).attr('href'));
window.addEventListener('popstate', function () {
    history.pushState(null, null, $(location).attr('href'));
});
0 голосов
/ 02 мая 2015

Проблема с Кодом Йосси Шашо заключается в том, что страница прокручивается до вершины каждые 50 мс. Поэтому я изменил этот код. Теперь он отлично работает во всех современных браузерах, IE8 и выше

var storedHash = window.location.hash;
function changeHashOnLoad() {
    window.location.href += "#";
    setTimeout("changeHashAgain()", "50");
}

function changeHashAgain() {
    window.location.href += "1";
}

function restoreHash() {
    if (window.location.hash != storedHash) {
        window.location.hash = storedHash;
    }
}

if (window.addEventListener) {
    window.addEventListener("hashchange", function () {
        restoreHash();
    }, false);
}
else if (window.attachEvent) {
    window.attachEvent("onhashchange", function () {
        restoreHash();
    });
}
$(window).load(function () { changeHashOnLoad(); });
0 голосов
/ 06 февраля 2014

Попробуйте этот код. Вам просто нужно реализовать этот код на главной странице, и он будет работать для вас на всех страницах

<script type="text/javascript">
    window.onload = function () {
        noBack();
    }
    function noBack() {
        window.history.forward();
    }
</script>
<body  onpageshow="if (event.persisted) noBack();">
</body>
0 голосов
/ 21 ноября 2013

Если вам нужно мягко подавить клавиши удаления и возврата в веб-приложении, чтобы при редактировании / удалении элементов страница не перенаправлялась неожиданно, вы можете использовать этот код:

window.addEventListener('keydown', function(e) {
  var key = e.keyCode || e.which;
  if (key == 8 /*BACKSPACE*/ || key == 46/*DELETE*/) {
    var len=window.location.href.length;
    if(window.location.href[len-1]!='#') window.location.href += "#";
  }
},false);
0 голосов
/ 14 марта 2013

Даже я сталкивался с такой же ситуацией раньше ... и мне не было никакой помощи. попробуйте эти вещи, может быть, они будут работать для вас

на странице входа <head> тег:

<script type="text/javascript">
    window.history.forward();
</script>

в кнопке выхода я сделал это:

protected void Btn_Logout_Click(object sender, EventArgs e)      
{
    connObj.Close();
    Session.Abandon();
    Session.RemoveAll();
    Session.Clear();
    HttpContext.Current.Session.Abandon();
}

и на странице входа в систему я сделал акцент на текстовом поле «Имя пользователя» следующим образом:

protected void Page_Load(object sender, EventArgs e)
{
    _txtUsername.Focus();
}

надеюсь, это поможет ... :) кто-то плз, научите меня, как редактировать эту страницу ...

0 голосов
/ 10 сентября 2012

Во всем мире отключение кнопки «назад» действительно плохая практика. Но в определенных ситуациях функциональность кнопки «назад» не имеет смысла.

Вот один из способов предотвращения нежелательной навигации по страницам:

Верхняя страница (файл top.php):

<?php
    session_start();
    $_SESSION[pid]++;
    echo "top page $_SESSION[pid]";
    echo "<BR><a href='secondary.php?pid=$_SESSION[pid]'>secondary page</a>";
?>

Страница второго уровня (файл secondary.php):

<?php
    session_start();
    if ($_SESSION[pid] != $_GET[pid]) 
        header("location: top.php");
    else {
        echo "secondary page $_SESSION[pid]";
        echo "<BR><a href='top.php'>top</a>";
    }
?>

Эффект состоит в том, чтобы разрешить переход от верхней страницы вперед к дополнительной странице и обратно (например, отмена) с использованием ваших собственных ссылок. Но после возврата на верхнюю страницу кнопка браузера не может перейти на дополнительную страницу.

0 голосов
/ 07 июня 2009

Вы должны использовать сообщения с правильным сроком действия и кэширующими заголовками.

0 голосов
/ 27 августа 2009

Вместо того, чтобы пытаться отключить кнопку возврата браузера, лучше ее поддержать. .NET 3.5 может очень хорошо обрабатывать кнопки браузера назад (и вперед). Поиск с помощью Google: «Scriptmanager EnableHistory». Вы можете контролировать, какие пользовательские действия будут добавлять запись в историю браузера (ScriptManager -> AddHistoryPoint), и ваше приложение ASP.NET получает событие всякий раз, когда пользователь нажимает кнопки браузера «Назад / Вперед». Это будет работать для всех известных браузеров

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