假设我的网站是example.com
。 在它上,我有以下链接:单击此处
,单击该链接后,用户将转到example.com/?foo=bar
。
我想要的是,默认情况下,单击链接时应该使用window.history
。 特别是,它将使用
window.history.pushState({"foo": "bar"}, "", "?foo=bar")
然而,如果用户例如“中击”或右击并说“在新选项卡中打开”,那么锚链接应该正常工作,只是在新选项卡中打开(而不会错误地触发当前选项卡中的pushstate
)。 这也应该更好地用于在新标签中打开链接的非标准方法,例如使用Vimium web扩展。
有没有一些标准的方法来实现这一点?
我写了一个演示。 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>