我想在所有使用 JavaScript 的浏览器中禁用撤消和重做。我想这样做,因为我们的应用程序内置了自己的撤消和重做历史。
我已经可以通过键盘输入来处理按键以禁用撤消和重做,但我也想禁用菜单项。(标准菜单和右键菜单)
这可能吗?即使仅在某些浏览器中才有可能,也总比没有好。
我想在所有使用 JavaScript 的浏览器中禁用撤消和重做。我想这样做,因为我们的应用程序内置了自己的撤消和重做历史。
我已经可以通过键盘输入来处理按键以禁用撤消和重做,但我也想禁用菜单项。(标准菜单和右键菜单)
这可能吗?即使仅在某些浏览器中才有可能,也总比没有好。
我知道这很旧,但对于其他好奇的人来说,这对我有用。
$(window).bind('keydown', function(evt) {
if((evt.ctrlKey || evt.metaKey) && String.fromCharCode(evt.which).toLowerCase() == 'z') {
evt.preventDefault();
}
});
您可以做的一件事是拦截 popstate 事件。不幸的是,我认为它不能被取消,所以你必须通过添加一个虚拟状态来撤销它。
以下代码阻止我按回 Chrome 和 FF。随意在其他浏览器上进行测试。
window.setTimeout(function(){
window.history.pushState({}, '', '#');
window.addEventListener("popstate", function() {
window.history.pushState({}, '', '#');
});
},1000);
确保适当地更改代码以适应您自己的历史。还可以考虑使用 HTML5 History API 而不是您自己的历史实现。
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
使用浏览器 API 是不可能的。但是有几种方法可以检测或处理方法。url 散列是处理后退或前进事件的一种方法。但是,出于用户安全考虑,浏览器不支持此功能。您可以搜索 javascript url 哈希脚本,但不要忘记与 html5 浏览器兼容的脚本。