繁体   English   中英

event.preventDefault不适用于CMD + R刷新

[英]event.preventDefault does not work for CMD+R refresh

我试图拦截并阻止所有默认事件。 任何人都可以指向文档/真理的源头来证明这是不可能的,例如: cmd + r (Mac)(或Windows的ctrl + r )。

<html>
    <head>
    </head>
    <body>
        <div id="debug">
            Debug:
        </div>

        <script>
            document.addEventListener('keypress', (event) => {
                const otherKeys = []
                if (event.ctrlKey) {
                    otherKeys.push("CTRL")
                }
                if (event.shiftKey) {
                    otherKeys.push("SHIFT")
                }
                if (event.altKey) {
                    otherKeys.push("ALT")
                }
                if (event.metaKey) {
                    otherKeys.push("META")
                }

                let otherKeysStr = otherKeys.join(",")
                if (otherKeysStr.length) {
                    otherKeysStr = `(${otherKeysStr})`
                }

                document.getElementById("debug").innerText += (` ${event.key} ${otherKeysStr}`)

                event.stopImmediatePropagation()
                event.stopPropagation()
                event.preventDefault()
                return false;
            });
        </script>
    </body>
</html>

正如lois6b建议的那样,您至少可以使用以下选项为用户提供不刷新页面的选项:

window.addEventListener('beforeunload', (event) => {
    event.preventDefault();
    event.returnValue = '';
    return '';
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM