如何为 onmousedown 添加延迟

How to add a delay to onmousedown

我正在尝试在 mousedown(单击)上设置延迟,这会在下面的代码中聚焦 newWin.focus: 所以简而言之,下面的代码工作正常。如果弹出窗口 window 处于打开状态,当用户单击页面上的任意位置时,它会重新聚焦于它(将其置于最前面)。

我想在用户点击页面时延迟 2 秒,然后让它重新聚焦到新的 window。

我花了好几个小时尝试使用各种设置超时来解决这个问题,但都无济于事。所以,我想我会展示我的作品,希望有人能解释我的需求是如何实现的。

PS:我仍在学习 javascript 并且绝不认为自己在该主题上知识渊博。

提前致谢!!

<script type="text/javascript">
var newWin;
function openPopup()
{
 newWin=window.open('https://www.somesite/url.php','window','width=400,height=600,scrollbars=0,resizable=1,top=300,left=300');

 document.onmousedown=focusPopup;
 document.onkeyup=focusPopup;
 document.onmousemove=focusPopup;
}
function focusPopup(){
  if(!newWin.closed){
    newWin.focus();
  }
}
</script>

只需使用setTimeout添加延迟。

The global setTimeout() method sets a timer which executes a function or specified piece of code once the timer expires.

var newWin;

function openPopup() {
  newWin = window.open('https://www.somesite/url.php', 'window', 'width=400,height=600,scrollbars=0,resizable=1,top=300,left=300');

  document.onmousedown =  function() {
    setTimeout(focusPopup, 2000);
  };
  document.onkeyup = focusPopup;
  document.onmousemove = focusPopup;
}

function focusPopup() {
    if (!newWin.closed) {
      newWin.focus();
    }
}


<script type="text/javascript">
var newWin;
function openPopup()
{
 newWin=window.open('https://www.somesite/url.php','window','width=400,height=600,scrollbars=0,resizable=1,top=300,left=300');

 document.onmousedown=()=>{
   setTimeout(focusPopup,2000)

};
 document.onkeyup=focusPopup;
 document.onmousemove=focusPopup;
}
function focusPopup(){
  if(!newWin.closed){
    newWin.focus();
  }
}
</script>

您可以将 setTimeout 添加到您的 mousedown 处理程序:

document.onmousedown = () => setTimeout(focusPopup, 2000);