【问题标题】:Can I specify a delay before the browser raises "rollover" event?我可以在浏览器引发“翻转”事件之前指定延迟吗?
【发布时间】:2008-12-05 19:54:13
【问题描述】:

我正在开发一个 ASP.NET Web 应用程序,该应用程序需要在 roolover 上弹出一个弹出窗口。我正在使用“OnMouseOver”事件,它按预期工作。问题是事件发生在“触发事件”上;即使是鼠标随意移动到控件上也会弹出弹出窗口(然后必须手动关闭)。我想添加一个延迟,以便快速通过相关控件不会触发事件。有没有办法设置这样的延迟,或者我可以使用不同的事件来获得相同的“慢速翻转触发事件”?

【问题讨论】:

    标签: html mouseover


    【解决方案1】:

    想到一个解决方案,但可能有更好的方法:

    1. 使onmouseover 通过setTimeout 延迟调用函数
    2. 在函数内部,检查鼠标实际上是否在该元素上。

    您也可以使用onmouseout 来清除setTimeout,但是您必须将对计时器的引用存储在全局变量中才能再次获取它。

    【讨论】:

      【解决方案2】:

      我最终做的是如下(oRow 是一个表格行,但它可以是任何控件):

      function ItemMouseOver(oRow, "parameters for the popup") 
      {
          oRow.showTimer = window.setTimeout(function() 
              { 
                  alert('popup');
              }, 1000);
      }
      function ItemMouseOut(oRow)
      {
          if (oRow.showTimer)
              window.clearTimeout(oRow.showTimer);
      

      在 ASP.NET 网格视图 RowDataBound 事件中:我添加了以下代码:

      protected void ReportGridView_RowDataBound(object sender, GridViewRowEventArgs e)
      {
          if (e.Row.RowType == DataControlRowType.DataRow && (
              e.Row.RowState == DataControlRowState.Normal 
              || e.Row.RowState == DataControlRowState.Alternate))
          {
              // get the input values for the popup for the row (stuff deleted)
              e.Row.Attributes["onmouseover"] = "javascript:ItemMouseOver(this,
                  "parameters for the popup");";
              e.Row.Attributes["onmouseout"] = "javascript:ItemMouseOut(this);";
          } 
      }
      

      它工作得很好。谢谢。

      【讨论】:

        猜你喜欢
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        • 2015-11-27
        相关资源
        最近更新 更多