使用 CTRL + 鼠标中键单击启用滚动而不是 link 重定向

Enable scroll with CTRL + middle mouse click instead of link redirection

有没有办法在同时按下 CTRL(或其他键)时使用鼠标中键(又名鼠标 3)滚动?而不是重定向到新选项卡中的 href 的默认行为?

https://jsfiddle.net/b7zyx39f/

我的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/800"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/800"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
    <a href="https://whosebug.com/"><img src="https://via.placeholder.com/150"></a>
</body>
</html>

您可以使用 auxevent (see this) 阻止中键点击和阻止默认操作。但在你的情况下,我建议删除 a 标签的 href 并为 link 添加属性 data-href。然后为那些 a 标签添加一个点击侦听器,它将重定向到所需的 link。一个例子可能是,

<a data-href="https://whosebug.com/"><img src="https://via.placeholder.com/800"></a>

并在 javascript

document.querySelectorAll("a").forEach(href => {
  href.addEventListener("click", e => {
    window.location.href = href.dataset.href;
  });
});

要捕获 ctrl 按钮,您可以添加另一个事件侦听器,以便在未按下 ctrl 时重定向到中间点击

href.addEventListener("auxclick", e => {
  if (!window.event.ctrlKey) {
    window.open(href.dataset.href, '_blank');
  }
});