ルーオーバーでポップアップを表示するために必要な ASP.NET Web アプリケーションに取り組んでいます。「OnMouseOver」イベントを使用していますが、期待どおりに動作します。問題は、イベントが「ヘア トリガー」にあることです。コントロールの上にマウスを軽く移動しても、ポップアップが表示されます (その後、手動で閉じる必要があります)。問題のコントロールをすばやく通過してもイベントがトリガーされないように、遅延を追加したいと考えています。そのような遅延を設定する方法はありますか、または同じ「遅いロールオーバーでのトリガーイベント」を取得するために使用できる別のイベントがありますか?
JonStonecash
質問する
672 次
2 に答える
3
頭に浮かぶ1つの解決策ですが、より良い方法があるかもしれません:
- 遅延を
onmouseover
介して関数を呼び出すsetTimeout
- 関数内で、マウスが実際にその要素の上にあることを確認します。
を使用して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 に答える