我正在研究评估系统,其中候选人尝试参加考试。因此,呈现问题及其选择的页面是具有iframe
的页面,其中问题是获取渲染。保留iframe
的页面包含JavaScript
计时器。
因此,当问题在浏览器上呈现以限制刷新时,我写了F5
和ctrl+F5
阻止代码,因此候选人无法使用键盘快捷键刷新,但在浏览器窗口中,仍然可以使用刷新按钮或后退按钮。有没有办法禁用它?我知道玩浏览器功能并不是一个好习惯,所以有什么办法可以摆脱这种局面。
答案 0 :(得分:9)
尝试此操作以禁用后退按钮。
<script type="text/javascript">
window.history.forward();
function noBack() { window.history.forward(); }
</script>
</head>
<body onload="noBack();"
onpageshow="if (event.persisted) noBack();" onunload="">
或者我们可以从工具栏中删除这些
window.open ("URL",
"mywindow","status=1,toolbar=0");
答案 1 :(得分:3)
请在所有最新浏览器中尝试使用此限制后退按钮。
history.pushState({ page: 1 }, "Title 1", "#no-back");
window.onhashchange = function (event) {
window.location.hash = "no-back";
};
答案 2 :(得分:1)
history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
history.pushState(null, null, document.URL);
});
答案 3 :(得分:0)
你可以尝试这个......: -
window.open ("http://viralpatel.net/blogs/",
"mywindow","status=1,toolbar=0");
这会打开一个没有工具栏的窗口...... 没有工具栏没有按钮..:D
答案 4 :(得分:0)
试试这个:
function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); };
答案 5 :(得分:0)
bool IsPageRefresh = false;
//this section of code checks if the page postback is due to genuine submit by user or by pressing "refresh"
if (!IsPostBack)
{
ViewState["ViewStateId"] = System.Guid.NewGuid().ToString();
Session["SessionId"] = ViewState["ViewStateId"].ToString();
}
else
{
if (ViewState["ViewStateId"].ToString() != Session["SessionId"].ToString())
{
IsPageRefresh = true;
}
Session["SessionId"] = System.Guid.NewGuid().ToString();
ViewState["ViewStateId"] = Session["SessionId"].ToString();
}
答案 6 :(得分:0)
这是不可能的。如果您不希望人们通过“返回”看到旧页面,则禁用缓存,但他们所看到的只是他们刚刚看到的东西,所以它没有任何区别。人们已经问了20年如何禁用后退按钮,到目前为止我从未见过禁用后退按钮的网站。
但是这里有一招(
)由于
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";}
答案 7 :(得分:-1)
on document.ready
我添加了这一行..
window.history.forward(-1)