我正在开发一个 ASP.NET Web 应用程序,该应用程序需要在 roolover 上弹出一个弹出窗口。我正在使用“OnMouseOver”事件,它按预期工作。问题是事件发生在“触发事件”上;即使鼠标在控件上随意移动也会弹出弹出窗口(然后必须手动关闭)。我想添加一个延迟,以便快速通过相关控件不会触发事件。有没有办法设置这样的延迟,或者我可以使用不同的事件来获得相同的“慢速翻转触发事件”?
JonStonecash
问问题
672 次
2 回答
3
想到一种解决方案,但可能有更好的方法:
- 通过延迟
onmouseover
调用函数setTimeout
- 在函数内部,检查鼠标实际上是否在该元素上。
您也可以使用 anonmouseout
来清除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 回答