pho*_*nix 14 javascript back-button javascript-events popstate
我试图阻止用户回到我的网络应用程序.为此,我尝试捕获window.onpopstate并添加e.preventDefault以取消后退按钮效果.
但它似乎没有发生.
window.addEventListener('popstate',function(e){
console.log(e); e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
是否无法阻止浏览器的popstate事件?或者我做错了什么?
首先,“不可能”永远不是一个可以接受的答案。
其次,您可以补偿popstate错误。例如,我的丰富编辑器必须不断补偿laast-bastard密钥:Backspace。它不是后退按钮的有效键(就像空格键用于“页面下移”一样),但是人们将个人喜好强加于世界,而不是添加浏览器扩展,因此当人们按下它时,有时会触发popstate而不是编辑器删除任何内容字符在键盘插入符号的左侧。
以下代码(此处未发布依赖项)检测何时触发popstate错误,并使用a e.preventDefault();将其拍打,然后使用修复地址栏地址history.go(1);。使用编辑器的人不会注意到发生了任何事情,因为不允许浏览器操纵DOM。这段代码很少(其他人可能会在各种情况下弥补此错误),并且我目前仅在Gecko / Firefox中进行了测试,因此请确保也测试基于Blink,Presto,Trident和WebKit的浏览器。
window.onpopstate = function(e)
{
if (id_('editor') && is_node_parent(document.activeElement,id_('editor')))
{
e.preventDefault();
history.go(1);
}
}
Run Code Online (Sandbox Code Playgroud)