Как мне обработать событие правого клика в Blazor (на стороне клиента / WASM), не показывая типичное контекстное меню браузера? - PullRequest
0 голосов
/ 24 января 2020

HandleClick, кажется, обрабатывает только левые щелчки, но похоже, что я могу использовать onmouseup и свойство MouseEventArgs.Button для определения правого щелчка.
Проблема в том, что появляется типичное браузерное контекстное меню. Есть ли способ предотвратить это? В Blazor я не вижу ничего похожего на protectDefault ().

Обновление: очевидно, мы можем сделать @onmouseup:preventDefault, но контекстное меню по-прежнему показывает

Ответы [ 2 ]

2 голосов
/ 24 января 2020

ОК, я понял:

<div oncontextmenu="return false;" @onclick="HandleClick" @onmouseup="HandleMouseUp" >
    this is a div
</div>
@code {

    void HandleClick(MouseEventArgs args)
    {
        Console.WriteLine("This is a left click");
    }

    void HandleMouseUp(MouseEventArgs args)
    {
        if (args.Button == 2)
            Console.WriteLine("This is a right click");
    }
}

Ключ - oncontextmenu="return false;" javascript в самом div.

1 голос
/ 16 апреля 2020

Спасибо за информацию, которая мне очень помогла

Просто совет для тех, кто использует это, я сделал свой собственный компонент контекстного меню, используя div с метками для пунктов меню, и находил, что контекстное меню по умолчанию все равно будет отображаться время от времени на такие вещи, как двойной щелчок правой кнопкой мыши или если я удерживал правую кнопку мыши слишком долго. Оказывается, щелчок правой кнопкой мыши происходил в моем компоненте меню, а затем показывалось меню по умолчанию, как оно отображалось поверх текущей позиции мыши. так что добавление oncontextmenu = "return false;" компоненту моего меню также требовалось полностью его остановить.

просто обмен, так как мне потребовалось слишком много времени, чтобы понять, почему он все еще появляется

...