Событие @ondblclick в Blazor также запускает 2 события одиночного щелчка

Обратите внимание на следующее в Blazor WebAssembly:

<span @onclick="Click" @ondblclick="DoubleClick">Click Me!</span>

@code {

    private void Click()
    {
        Console.WriteLine("Click");
    }

    private void DoubleClick()
    {
        Console.WriteLine("Double-click");
    }
}

Если я дважды щелкну элемент, в консоли я увижу:

Click
Click
Double-click

Есть ли способ получить событие двойного щелчка, не вызывая 2 события одиночного щелчка? Я хочу использовать оба события для разных целей, и из-за этого они мешают друг другу.

Любые предложения очень ценятся.


person Greg    schedule 28.08.2020    source источник


Ответы (1)


Вероятно, это связано с тем, как работает событие ondblclick. Цитата из MDN: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ondblclick

Событие dblclick возникает, когда пользователь дважды щелкает элемент. Он срабатывает после двух событий щелчка.

Итак, вы видите, как это работает: \

Таким образом, вам может потребоваться запустить действие однократного щелчка после небольшой задержки, если в течение этого времени не произойдет событие двойного щелчка.

person juunas    schedule 28.08.2020
comment
Честно говоря, это не должно иметь большого значения. Я надеялся, что я могу добавить какой-нибудь тег, который сделает это за меня! - person Greg; 28.08.2020
comment
Хотя я смог бы реализовать это предложение с опозданием, я бы не назвал его удобным. Вы это реализовали? С таймерами и всем остальным? Или с проверкой регистра кликов в dblclick? Просто любопытно. - person Jens Mander; 19.04.2021