阻止鼠标的第四和第五个按钮在浏览器历史记录中向后/向前导航?

时间:2019-07-18 20:55:07

标签: javascript

如何防止鼠标第四和第五按钮的默认行为(在浏览器历史记录中来回移动)?我想在浏览器游戏中使用这些按钮来移动相机。

1 个答案:

答案 0 :(得分:0)

我最近想为CubicleSoft File Explorer做这件事。为了完成任务,使用浏览器历史记录设置了三个新的“ popstate”:“后退”,“主要”,“前进”。使用鼠标上的后退或前进按钮可以触发popstate处理程序,该处理程序会将历史记录重置为“ Main”状态。

    // Capture browser-level back/forward buttons.  Alters browser history.
    var CapturePopStateHandler = function(e) {
        if (e.state && e.state._fileexplorer)
        {
            if (e.state._fileexplorer === 'back')
            {
                window.history.forward();

            }
            else if (e.state._fileexplorer === 'forward')
            {
                window.history.back();

            }
        }
    };

    // Sets up three history items and places the user in the middle of those three.
    window.history.pushState({ _fileexplorer: 'back' }, document.title);
    window.history.pushState({ _fileexplorer: 'main' }, document.title);
    window.history.pushState({ _fileexplorer: 'forward' }, document.title);
    window.history.back();

    window.addEventListener('popstate', CapturePopStateHandler, true);

不利之处在于,除非使用长按后退按钮选项,否则用户现在会停留在页面上。但是可以肯定捕获了硬件后退/前进硬件鼠标按钮(Alt +左​​/右箭头键组合也是如此)。理想情况下,每当不再需要捕获状态时,都将其撤消。