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

#asp.net-core #blazor-client-side #blazor-webassembly

#asp.net-core #blazor-на стороне клиента #blazor-webassembly

Вопрос:

Рассмотрите следующее в 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 событий с одним щелчком мыши? Я хочу использовать оба события для разных целей, и из-за этого они мешают друг другу.

Любые предложения приветствуются.

Ответ №1:

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

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

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

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

Комментарии:

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

2. Хотя я мог бы реализовать предложение с задержкой, я бы не стал точно описывать это как удобное. Вы это реализовали? С таймерами и всем остальным? Или с проверкой регистра щелчков в dblclick? Просто любопытно.