如果按下后退按钮,如何将用户保持在同一页面?

时间:2012-07-25 12:18:04

标签: javascript jquery html back-button

  

可能重复:
  How to disable Back button in IE and firefox?

我正在开发一个单页网站(DAM)。要进入此站点,必须对用户进行身份验证。登录后如果用户点击后退按钮,他就会看到登录页面。登录页面不在我的控制之下,意味着它是由oracle内容管理系统提供的,所以我不能在那里添加任何代码。

我应该将哪些代码添加到我的页面中,这样如果按下后退按钮,他将被导航到同一页面。

我曾尝试使用onbeforeunload并且有效,但我不想要任何确认消息,只是想留在该页面上。

6 个答案:

答案 0 :(得分:5)

这是不可能的,因为它明确地设计为以这种方式工作 - 如果用户“返回”浏览器必须返回到上一页。有一些不可靠的技术,但最终它们都因一种原因而失败。

但是......我想在您的情况下,您可以进行双重定向并在登录后立即处理着陆页中的“bacK”按钮?

答案 1 :(得分:2)

具有良好可用性的单页应用程序如何工作

如果您想增加页面的用户体验和可用性因素,则应使用页面哈希/片段。我不打算提供与其他人相同(或类似)的代码,而是升级体验。

那么那个UX怎么样呢

每次更改工作的上下文时,您的单页Web应用程序应该更改哈希。这可以通过用户在UI中执行的用户界面或业务流程来定义,或者甚至可以定义用户将/应该返回到先前流程状态时这些流程的各个步骤。

这样,您的应用程序的功能类似于包含多个页面的普通Web应用程序,并在业务流程及其步骤的相同基础上创建新的历史记录条目(在这种情况下,步骤通常是整页回发)。

因此,当您更改页面片段时,业务流程和将应用程序视为普通的多页面应用程序将为您提供许多有用的点。由于您可以控制它,因此可以提供比多页Web应用程序更好的粒度(通常更少)。

多页应用程序历史记录分数太多的简单示例

表单帖子通常总是有问题的,因此在回发响应之后有一个历史记录点总是不好的,因为用户点击F5一遍又一遍地重新发送相同的表单(好的浏览器会询问你重新发送帖子数据但这仍然是糟糕的经历)。

页面分段是可行的方法,只需使用它而不仅仅是阻止返回登录页面。

完全阻止登录页面进入历史记录堆栈,方法是在iframe内将其显示在您的页面上。您当然需要检测未经身份验证的用户并自行添加iframe并在其中加载登录。用户进行身份验证后,您应该重新加载自己的页面。但是你应该知道,检测登录成功并不是一个简单的过程。

答案 2 :(得分:0)

window.location.replace(URL);

将当前文档替换为提供的URL处的文档。与assign()方法的不同之处在于,在使用replace()之后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。

答案 3 :(得分:-1)

function win_onkeydown_handler()
{
switch (event.keyCode){

case 116 : // 'F5'
event.returnValue = false;
event.keyCode = 0;
alert("Refresh Not Allowed");
break;
case 08 : // 'BS'
if(event.srcElement.tagName=="INPUT" || event.srcElement.tagName=="DIV")
{
}
else{
event.returnValue = false;
event.keyCode = 0;
//alert("Backspace Not Allowed");
}
break;
case 17 : // ctrl key   
 event.returnValue = false;
 event.keyCode = 0;
 alert('Control Key restricted');
 }
 }

即使我在我的项目中得到了这个,但是我使用上面的脚本来阻止这个...如果你需要阻止空间你可以单独使用该代码

答案 4 :(得分:-2)

您不能控制客户端浏览器.. 由于某些安全问题,不允许脚本控制客户端浏览器..

答案 5 :(得分:-3)

试试这个,它将解决您的问题:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="button" value="Back" onclick="history.go(0);return true;" />
</body>
</html>

干杯!!!!