【问题标题】:How to add a delay to onmousedown如何为 onmousedown 添加延迟
【发布时间】:2022-01-11 04:21:20
【问题描述】:

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

我想在用户点击页面时有 2 秒的延迟,然后让它重新关注新窗口。

我已经花了几个小时试图解决这个问题,但无济于事,在这里和那里使用各种 settimeout。所以,我想我会展示我的作品,并希望有人可以解释我的需求是如何实现的。

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 时遇到安全错误吗?
  • 没有。然而,雷回答了这个问题。感谢您提供帮助。非常感谢。

标签: javascript settimeout onfocus


【解决方案1】:

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

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

【讨论】:

  • 那怎么样!简单,像魅力一样工作。谢谢你,雷!
【解决方案2】:

<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>

【讨论】:

  • Musafiroon,非常感谢您抽出宝贵时间提供帮助!我真的很感激!!我首先尝试了Ray的答案,主要是因为它非常快速和简单。事实证明它有效,所以我将其设置为接受的答案。
【解决方案3】:

只需使用setTimeout 来添加延迟。

全局 setTimeout() 方法设置一个计时器,一旦计时器到期,该计时器就会执行一个函数或指定的一段代码。

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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-17
    • 2022-11-11
    • 2018-04-18
    • 2020-08-03
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    相关资源
    最近更新 更多