在 MVC 4 和浏览器后退按钮的视图中禁用退格
Posted
技术标签:
【中文标题】在 MVC 4 和浏览器后退按钮的视图中禁用退格【英文标题】:Disabling Backspace in a view in MVC 4 and browser back button 【发布时间】:2016-05-22 01:12:38 【问题描述】:我想创建一个页面(在本例中为view
),如果按下退格键,将显示错误。
这是我对退格键的尝试:
<script type ="text/javascript">
$(document).ready(function (event)
if (event.keycode == 8)
alert("Don't go back");
window.history.back(0);
);
</script>
它不工作,
另外,我想抓住浏览器的后退按钮,这样我就可以禁用返回页面。
任何替代方案都会被接受,因为它会拯救我的一天。
提前致谢。
【问题讨论】:
How to capture a backspace on the onkeydown event的可能重复 【参考方案1】:您通常不能(浏览器安全限制)。您可以判断用户是否离开页面(onbeforeunload、onunload fire),但您无法判断他们去了哪里,除非您已将页面设置为允许。
html5 引入了 HTML5 History API;在符合标准的浏览器中,如果用户导航回您网站上较早的“页面”,onpopstate 事件将触发。
if (window.history && window.history.pushState)
$(window).on('popstate', function()
var hashLocation = location.hash;
var hashSplit = hashLocation.split("#!/");
var hashName = hashSplit[1];
if (hashName !== '')
var hash = window.location.hash;
if (hash === '')
alert('Back button was pressed.');
);
window.history.pushState('forward', null, './#forward');
【讨论】:
它被阻止了一次。我想在它点击返回按钮时阻止它@Abbas【参考方案2】:在按键事件中绑定
$(document).unbind('keydown').bind('keydown', function (event)
var doPrevent = false;
if (event.keyCode === 8)
var d = event.srcElement || event.target;
if ((d.tagName.toUpperCase() === 'INPUT' &&
(
d.type.toUpperCase() === 'TEXT' ||
d.type.toUpperCase() === 'PASSWORD' ||
d.type.toUpperCase() === 'FILE' ||
d.type.toUpperCase() === 'SEARCH' ||
d.type.toUpperCase() === 'EMAIL' ||
d.type.toUpperCase() === 'NUMBER' ||
d.type.toUpperCase() === 'DATE' )
) ||
d.tagName.toUpperCase() === 'TEXTAREA')
doPrevent = d.readOnly || d.disabled;
else
doPrevent = true;
if (doPrevent)
event.preventDefault();
);
【讨论】:
以上是关于在 MVC 4 和浏览器后退按钮的视图中禁用退格的主要内容,如果未能解决你的问题,请参考以下文章