我有这样的html代码:
<ul>
<li>
<a href="#foo">foo</a>
</li>
</ul>
当用户单击该项目时,将调用单击处理程序。
我想要的是:
- 更改处理程序方法中的哈希(使用
window.location.hash
) - 当用户通过鼠标左键单击时,应调用处理程序
- 当用户通过鼠标中键点击时(例如在 Chrome 中),链接应该在新标签中打开,但不应在当前页面上调用处理程序
- 支持与链接的其他交互:当用户在活动链接上按下回车键(他可以使用
tab
键激活它)或者如果他使用 vimperator 或 vimium 等浏览器扩展
如果我在处理程序中间按钮中更改哈希而不打开新选项卡(但已在当前页面上调用处理程序),但如果不调用处理程序,例如中间按钮单击或按 ctrl 或按下时单击,则已解决
如果我从处理程序代码中删除哈希更改,中间按钮会打开新选项卡,但处理程序会在当前页面上调用。
请给我一些建议如何实现我的目标:我应该mousedown
与点击处理程序一起实现处理程序还是可能有更方便的方法?