让 preventDefault() 仅持续 200 毫秒 - JavaScript

Have preventDefault() last for 200ms only - JavaScript

我有一个 link,我已经设置了 preventDefault() 方法,因为在 link 连接到 link 地址。

我的问题是虽然我正在努力如何将 preventDefault() 设置为仅持续 200 毫秒。我尝试过使用 setTimeout(),但我没有任何快乐?

基本上在下面的代码中我希望这样当有人点击锚标记时 200 毫秒内什么都不会发生(我实际上会在这 200 毫秒内发生淡出动画,但这样做很容易,它只是我正在努力解决的 preventDefault() 的时间。

代码笔:https://codepen.io/emilychews/pen/BrRZbX

window.addEventListener("load", function(){
  
  var link = document.getElementById("link");
  
  link.addEventListener("click", function(e){
     e.preventDefault();
    
  })
  
});
body {
      margin: 0; 
      display: flex; 
      justify-content: center; 
      align-items: center; 
      width: 100%; 
      height: 100vh;
     }
<a target="_blank" href="https://www.google.com" id="link">Google</a>

为我工作:

e.preventDefault();
setTimeout(() => window.location = link.href, 200);

您不能真正延迟 preventDefault,因为它是同步的 - 您必须手动强制使用默认效果。 (另一种选择是创建一个自定义事件以在 200 毫秒内分派到元素,但这需要更多代码)

我想不出preventDefault然后继续的方法,但您应该可以在等待 200 毫秒后手动导航:

window.addEventListener("load", function(){

  var link = document.getElementById("link");

  link.addEventListener("click", function(e){
     e.preventDefault();
     setTimeout(() => {
         // if you want to open in a new window
         window.open(e.target.href);
         // if you want to navigate away (same window)
         window.location = e.target.href;
     }, 200);
  })
});