【问题标题】:How to prevent a user from going back/forward when they are on a page?如何防止用户在页面上后退/前进?
【发布时间】:2015-06-03 18:15:01
【问题描述】:

我有一个在不同系统(即电话系统)的框架内运行的脚本。每次用户单击 shift 并用鼠标滚动时,页面都会返回并导致电话系统出现问题。

我需要完全阻止用户向前或向后导航,因为此页面将由电话系统控制,并且只要电话系统处于打开状态就应该打开。

为了停止导航,我已经这样做了

<script type="text/javascript">
 function stop()
 {
     return false;
 }

 document.onmousewheel = stop;
 window.onbeforeunload = stop;

</script>

但这会显示一条消息“您确定要离开此页面吗?”用户必须点击“离开此页面”或“留在此页面”才能继续。

但是,如果用户单击“离开此页面”,我仍然会遇到原始问题。

有没有办法完全阻止用户返回? 以下是我想到但无法应用的潜在解决方案

  1. 使代码代表用户单击“留在此页面上”。如果我总是可以点击“留在此页面上”
  2. 禁用“离开此页面”按钮。因此,用户将没有其他按钮可以点击,只有“留在此页面”。

【问题讨论】:

  • 浏览器不允许您执行 1 或 2。因此根本不可能。
  • 将按键事件绑定到您的 HTML 文档并在按下这些特定键时使用 event.preventDefault() 应该适合您。你能测试一下吗?
  • @lucasnadalutti 我该怎么做?
  • 即使我不确定这是否能解决您的问题,我也会将其作为答案发布。

标签: javascript jquery browser navigation


【解决方案1】:

这假设你已经加载了 jQuery。我无法在您的场景中对此进行测试,所以请告诉我这是否适合您。

$('html').keypress(function(event) {
    // 16 is shift's key code
    if (event.which === 16) {
        event.preventDefault();
    }
});

这应该可以防止 shift 键在浏览器中执行其默认行为。

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多