Могу ли я указать задержку до того, как браузер вызовет событие “rollover”?

StackOverflow https://stackoverflow.com/questions/344928

  •  19-08-2019
  •  | 
  •  

Вопрос

Я работаю над ASP.NET веб-приложением, которое требуется для вызова всплывающего окна при руловере.Я использую событие "OnMouseOver", и оно работает так, как ожидалось.Проблема в том, что событие находится на "спусковом крючке".;даже случайное наведение курсора мыши на элемент управления вызывает всплывающее окно (которое затем должно быть удалено вручную).Я хочу добавить задержку, чтобы быстрый переход к рассматриваемому элементу управления не вызывал событие.Есть ли способ установить такую задержку или есть другое событие, которое я мог бы использовать, чтобы получить то же самое "событие запуска при медленном опрокидывании"?

Это было полезно?

Решение

Одно из решений, которое приходит на ум, хотя, возможно, есть способы получше:

  1. Сделайте так, чтобы onmouseover вызовите функцию через setTimeout задержка
  2. Внутри функции убедитесь, что мышь действительно наведена на этот элемент.

Вы также могли бы использовать onmouseout чтобы очистить setTimeout, но тогда вам пришлось бы сохранить ссылку на таймер в глобальной переменной, чтобы получить доступ к нему снова.

Другие советы

В итоге я сделал следующее (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 просмотр таблицы с привязкой к строке данных:Я добавил следующий код:

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

Это работает просто отлично.Спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top