在1000毫秒

时间:2016-04-14 05:08:35

标签: javascript mouseevent settimeout dispatchevent

以下是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。

0 个答案:

没有答案