0

ルーオーバーでポップアップを表示するために必要な ASP.NET Web アプリケーションに取り組んでいます。「OnMouseOver」イベントを使用していますが、期待どおりに動作します。問題は、イベントが「ヘア トリガー」にあることです。コントロールの上にマウスを軽く移動しても、ポップアップが表示されます (その後、手動で閉じる必要があります)。問題のコントロールをすばやく通過してもイベントがトリガーされないように、遅延を追加したいと考えています。そのような遅延を設定する方法はありますか、または同じ「遅いロールオーバーでのトリガーイベント」を取得するために使用できる別のイベントがありますか?

4

2 に答える 2

3

頭に浮かぶ1つの解決策ですが、より良い方法があるかもしれません:

  1. 遅延をonmouseover介して関数を呼び出すsetTimeout
  2. 関数内で、マウスが実際にその要素の上にあることを確認します。

を使用してonmouseoutをクリアすることもできsetTimeoutますが、再度取得するには、タイマーへの参照をグローバル変数に格納する必要があります。

于 2008-12-05T19:59:20.410 に答える
0

私がやったことは次のとおりです(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);";
    } 
}

それはうまく動作します。ありがとう。

于 2008-12-05T20:27:17.873 に答える