Estoy tratando de deshabilitar la funcionalidad del botón de retroceso del navegador en una página (UX deficiente, conozco todas las implicaciones de esta acción) usando un script al que se hace referencia aquí, pero el script solo parece funcionar después de que el usuario haya interactuado de alguna manera con la página (p. ej. .clic en la pestaña).
Si el usuario navega a la página y hace clic en el botón Atrás, parece que el script no funciona. No estoy tratando de arreglarlo porque la funcionalidad que proporciona es lo suficientemente buena para nuestro caso de uso, pero tengo curiosidad por saber por qué este script no parece funcionar hasta la interacción del usuario.
Se probó el script y se observó el comportamiento en Chrome versión 93.0.4577.82 y Edge versión 95.0.1020.53
<script> (function (global) { if(typeof (global) === "undefined") { throw new Error("window is undefined"); } var _hash = "!"; var disableBack = function () { global.location.href += "#"; global.setTimeout(function () { global.location.href += "!"; }, 50); }; global.onhashchange = function () { if (global.location.hash !== _hash) { global.location.hash = _hash; } }; global.onload = function () { disableBack(); document.body.onkeydown = function (e) { var elm = e.target.nodeName.toLowerCase(); if (e.which === 8 && (elm !== 'input' && elm !== 'textarea')) { e.preventDefault(); } e.stopPropagation(); }; }; })(window); </script>