Могу ли я указать задержку перед тем, как браузер вызовет событие "опрокидывания" - PullRequest
0 голосов
/ 05 декабря 2008

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

Ответы [ 2 ]

3 голосов
/ 05 декабря 2008

Одно решение, которое приходит на ум, могут быть и лучшие способы:

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

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

0 голосов
/ 05 декабря 2008

Я закончил следующим образом (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);

В событии RowDataBound вида сетки 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);";
    } 
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...