在IE上,我可以使用(非常非标准但可以正常工作)jQuery来实现这一点
if ($.browser.msie)
$(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});
Run Code Online (Sandbox Code Playgroud)
但有可能以一种适用于Firefox的方式,或以跨浏览器的方式获得奖金吗?
作为记录:
$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });
Run Code Online (Sandbox Code Playgroud)
什么也没做.
$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)
解决了问题,但是在页面上呈现退格键不可用,这比原始行为更糟糕.
编辑:我这样做的原因是我不是创建一个简单的网页,而是一个大型的应用程序.因为你在错误的地方按下退格键而失去10分钟的工作是令人难以置信的烦恼.通过防止退格键导航回来,防止错误与烦人用户的比例应该高于1000/1.
编辑2:我不是想阻止历史导航,只是意外事故.
EDIT3:@brentonstrines评论(因为这个问题非常受欢迎而搬到这里):这是一个长期的'修复',但你可以抛弃你的支持Chromium bug来改变webkit中的这种行为
想要禁用网站的后退按钮
每当用户点击浏览器后退按钮时,它就不能进入他之前访问过的页面.
可以使用"纯"HTML5/Javascript(渐进式)Web应用程序拦截移动设备后退按钮以避免App退出吗?
这个问题与此类似,但我想知道是否有可能在不依赖PhoneGap/Ionic或Cordova的情况下实现此类行为.
我正在使用Angular 2开发一个网站.有没有办法使用Angular 2禁用或触发浏览器后退按钮?
谢谢
在OSX上的最新Chrome浏览器中,我注意到开始输入评论框并点击其他链接或按后退按钮会触发一个确认窗口,询问我是否要离开:

作为一名老学校开发人员,我相信唯一的可能性就是将一个onbeforeunload事件附加到页面来处理后退按钮点击.我知道你可以对锚点进行全局绑定来模拟onbeforeunload,但我很惊讶他们设法有一个自定义样式的确认而不是股票,丑陋的确认对话框.
他们是如何做到的呢?这是某种HTML5窗口历史记录还是pushState事件触发器?
我正在使用Reactjs。我想警告用户单击后退按钮。我所做的是
handleWindowClose = (ev) => {
ev.preventDefault();
return ev.returnValue = 'Leaving this page will loose data';
}
componentDidMount = () => {
window.addEventListener('beforeunload',this.handleWindowClose);
}
componentWillUnmount = () => {
window.removeEventListener('beforeunload',this.handleWindowClose);
}
Run Code Online (Sandbox Code Playgroud)
但是,这与单击后退按钮不起作用。所以我尝试这样做
handleWindowClose = (ev) => {
ev.preventDefault();
return ev.returnValue = 'Leaving this page will loose data';
}
onBackButtonEvent = (e) => {
e.preventDefault();
if(confirm("Do you want to loose this data")){
window.history.go(0);
}else {
window.history.forward();
}
}
componentDidMount = () => {
window.addEventListener('beforeunload',this.handleWindowClose);
window.addEventListener('popstate',this.onBackButtonEvent);
}
componentWillUnmount = () => { …Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.NET MVC(最新版本).
想象一下有两页:
第1页:"输入数据">>第2页:"谢谢"
提交Page-1后,您将被重定向到Page-2.
我的目标:当你进入Page-2后,当你点击浏览器的后退按钮时,我想确保你不能回到Page-1.相反,我希望你留在Page-2(或每次按下后退按钮时被推到Page-2).
我尝试过各种各样的事情.以下只是一些简化的伪代码......
[NoBrowserCache]
public ActionResult Page1(int userId)
{
var user = GetUserFromDb(userId);
if (user.HasAlreadySubmittedPage1InThePast)
{
// forward to page 2
return RedirectToAction("Page2", routeValues: new { userId = userId });
}
var model = new Page1Model();
return View("Page1", model);
}
[NoBrowserCache]
[HttpPost]
public ActionResult Page1(Page1Model model)
{
var user = GetUserFromDb(model.UserId);
if (user.HasAlreadySubmittedPage1InThePast)
{
// forward to page 2
return RedirectToAction("Page2", routeValues: new { userId = model.UserId });
}
// Save posted data to the …Run Code Online (Sandbox Code Playgroud) 当用户在浏览器上按退格键时,有没有办法阻止默认操作发生?我不需要阻止用户离开,只需要进行默认的退格操作.我需要退格键做一些不同的事情(这是一场游戏).
我尝试没有成功:
window.addEventListener('keydown', function(e) {
if (e.keyCode === Game.Key.BACK_SPACE)
{
e.preventDefault();
e.stopPropagation();
return false;
}
}, false);
Run Code Online (Sandbox Code Playgroud)
如果我在if内部发出警报,则会显示退格键按下警报.所以,keyCode是正确的.
编辑:这必须适用于Opera 10.6,Firefox 4,Chrome 6,IE 9和Safari 5.
在线考试一旦候选人点击了开始按钮,我就不想让他回去(到以前的页面),如果他通过使用浏览器属性做任何活动,他应该在同一页面.一旦他点击提交按钮,他就是走出那个页面.
在这里,如果我清除缓存并按下浏览器后退按钮,页面显示为" 文档已过期所请求的文档在Firefox的缓存中不可用. "因此我不想清除cach insted我需要竞争禁用后退按钮,即不应该发生任何事情单击后退按钮.
如果有人知道让我知道如何实现这个概念......
我有一个网站收到大量以下错误:
提供的防伪令牌适用于与当前用户不同的基于声明的用户.
防伪cookie令牌和表单字段令牌不匹配.
如果防伪令牌不是针对用户但在登录页面上包含用户,我想阻止该站点抛出错误,例如:
提供的防伪令牌适用于用户"",但当前用户是"Garret".
我不希望此例外适用于登录页面以外的任何其他页面.所以我不想添加AntiForgeryConfig.SuppressIdentityHeuristicChecks = true;到整个网站.我还想让网站尽可能安全,因为它包含HIPAA数据.我该怎么做才能保证它尽可能安全,但仍然试图在登录页面上防止这个错误,因为它使用户难以使用?
该站点托管在负载平衡服务器上,但我认为这不是问题.我认为错误主要是由于使用浏览器的后退按钮,在登录前打开登录页面一段时间,已登录或多次登录.还有一些用户通过可能没有加载页面的应用程序访问它,只是尝试发布登录信息.
所以,请让我知道在尽可能安全的同时防止登录页面出现此错误的最佳选择是什么?
我写了两个 HTML 文件:
<a href = "Home.html">Next Page</a><html>
<body>
<a href = >Login.html>>Prev Page</a>
</body>
<script type = "text/javascript" >
history.pushState("anything", "", "#1");
window.onhashchange = function (event) {
window.location.hash = "a";
};
</script>
</html>Run Code Online (Sandbox Code Playgroud)
` 我正在尝试禁用浏览器的后退按钮。如果我在 chrome 上执行此代码,它不会禁用后退按钮,但如果我history.state在 Home.html 页面的控制台中运行命令,然后单击后退按钮,那么它会保留在同一页面上(按预期工作)。为什么这样?
我想禁用浏览器的后退按钮。我尝试过一些 javascript 代码来实现相同的功能。但这些代码并没有满足我的要求。它可以在 Firefox 中运行,但不能在 Chrome 和 Edge 中运行。有时这三个都可以工作,但随机工作和不工作。
任何人都可以与我分享该脚本,该脚本可以在所有浏览器中禁用后退按钮,而不会出现随机行为等缺陷。
这里我展示了一些我尝试过的脚本
history.pushState(null, null, window.location.href);
history.back();
window.onpopstate = () => history.forward();
history.pushState(null, null, location.href);
history.back();
history.forward();
window.onpopstate = function () { history.go(1); };
Run Code Online (Sandbox Code Playgroud) javascript ×9
jquery ×3
asp.net-mvc ×2
android ×1
angular ×1
asp.net ×1
back-button ×1
browser ×1
c# ×1
events ×1
firefox ×1
html ×1
html5 ×1
modal-dialog ×1
php ×1
reactjs ×1
security ×1