提问者:小点点

有一个默认使用window.history但仍然支持在新选项卡中打开的链接


假设我的网站是example.com。 在它上,我有以下链接:单击此处,单击该链接后,用户将转到example.com/?foo=bar

我想要的是,默认情况下,单击链接时应该使用window.history。 特别是,它将使用

window.history.pushState({"foo": "bar"}, "", "?foo=bar")

然而,如果用户例如“中击”或右击并说“在新选项卡中打开”,那么锚链接应该正常工作,只是在新选项卡中打开(而不会错误地触发当前选项卡中的pushstate)。 这也应该更好地用于在新标签中打开链接的非标准方法,例如使用Vimium web扩展。

有没有一些标准的方法来实现这一点?


共1个答案

匿名用户

我写了一个演示。 href用于右击,e.PreventDefault()用于默认操作

    <div>
        <a href="?foo=bar" id="testLink" >Jump</a>
    </div>
    <script>
        window.onload = function () {
            document.querySelector('#testLink').addEventListener('click', function(e) {
                e.preventDefault()
                window.history.pushState({"foo": "bar"}, "", "?foo=bar")
            })
        }
    </script>