【问题标题】:How to completly disable back button of a browser while taking online exam?在线考试时如何完全禁用浏览器的后退按钮?
【发布时间】:2014-01-03 05:06:18
【问题描述】:

在在线考试中,一旦候选人点击开始按钮,我不想让他返回(到前一页),如果他使用浏览器属性进行任何活动,他应该在同一页面上。一旦他点击提交按钮,他将离开该页面。

在这里,如果我清除缓存并按下浏览器后退按钮,页面显示为“文档已过期,请求的文档在 Firefox 的缓存中不可用。”因此我不想清除我需要的缓存竞争性地禁用后退按钮,即点击后退按钮不会发生任何事情。

如果有人知道,请告诉我如何实现这个概念......

【问题讨论】:

标签: javascript php jquery html


【解决方案1】:

试试这个脚本

<script>
window.location.hash="no-back-button";
window.location.hash="Again-No-back-button";//again because google chrome don't insert first hash into history
window.onhashchange=function(){window.location.hash="no-back-button";}
</script> 

另请参阅此link。此link包含演示和下载代码

【讨论】:

  • 它不能在 Chrome 和 Safari 中运行,只能在 Firefox 中运行
【解决方案2】:

试试下面的代码。此代码使用最新的 Chrome 和 Firefox 浏览器进行了测试。

<script type="text/javascript">
    history.pushState(null, null, location.href);
    history.back();
    history.forward();
    window.onpopstate = function () { history.go(1); };
</script>

【讨论】:

    【解决方案3】:

    虽然您可以阻止返回按钮,但您不能阻止用户在考试时禁用 JS。这使得 JS 方法实际上毫无用处。

    假设以前的页面是问卷,我建议一旦用户离开该页面,对该页面的任何进一步访问都将无效。这可以很容易地使用服务器端语言和数据库来跟踪用户访问的页面。

    请注意,有些浏览器在返回时会“刷新”前一页,而另一些浏览器会从缓存中加载它们。后者将使页面仍然可以访问,即使您在服务器上将其标记为不可访问。您可以进一步做的是,一旦该页面被认为对访问无效,则使对该页面采取的任何操作无效。这样,即使用户拥有该页面的副本,他也无法对其进行任何操作。

    此外,这是一场考试,JS 不适合放置一些考试逻辑,因为它很容易被检查和修改。你应该把所有东西都留在服务器上。

    【讨论】:

      【解决方案4】:

      您可以使用replace()

      window.location.replace('your url here');
      

      【讨论】:

      • 如果禁用了 js 或者浏览器不支持 js,这将不起作用
      • 你能发布你的代码吗?以便我了解您的方法
      • 如果您在 Asp.Net 中使用母版页,这可能不是正确的解决方案
      【解决方案5】:

      在您的页面中尝试以下功能以防止表单卸载。

      $(window).on('beforeunload', function(){
            return false;
      });
      

      或尝试unload 功能并防止当前页面静默卸载。

      【讨论】:

        【解决方案6】:

        您实际上不能覆盖浏览器后退按钮的默认行为,这是浏览器之间的安全问题。

        但是,您可以在某种意义上编写代码,让您的背部看起来很瘫痪。检查我给了一些时间的回复之一。 how to stop browser back button using javascript。它对我来说仍然可以正常工作(IE-7 运气不好)。但是,如果有人在浏览器中禁用了 javascript 怎么办。这将使这个逻辑完全失败,这可能是一种罕见的情况。

        您可以遵循的另一种做法是在window.open() 中打开您的页面链接。但它有自己的优点和缺点。 See Here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-15
          • 2011-08-06
          • 2010-10-31
          • 2014-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多