让 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);
})
});
我有一个 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);
})
});