以下是plunkr: https://plnkr.co/edit/zhWBY7G0ALnM8dBSZ5nm?p=preview
如果您将1001
更改为1000
,则调度将按预期工作 - 将遵循链接。始终按预期调用事件处理程序。这只是默认行为(链接后)停止工作。我用谷歌搜索了一个无济于事的理由。
JS:
window.onload = function(){
var trigger = document.getElementById('trigger');
trigger.addEventListener('click', clickLink);
var element = document.getElementsByTagName('a')[0];
element.addEventListener('click', function(){
// this will work regardless...
console.log('link clicked!')
});
function clickLink(){
window.setTimeout(function(){
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, true);
element.dispatchEvent(evt);
}, 1001);
}
}
HTML:
<a href="http://google.com" target="_blank">Google</a>
<span id="trigger">Click Me</span>
这是一个角度示例的简化版本,其中我尝试在遵循指令中的链接之前实现超时。同样的问题。 https://plnkr.co/edit/yGBp6PkvpbQkQUTeHX40?p=preview
发生了什么事?为什么神奇的1000毫秒截止?我正在使用Chrome。