如何在Elm Browser.Event.onKeyDown上使用阻止默认设置

时间:2019-07-04 04:49:16

标签: event-handling elm

请注意:我找不到在这里可以使用的解决方案,因此我使用了相同的端口。

我需要使用Browser.Events.onKeyDown,我也为此编写了一个解码器,我需要为自己的Web应用程序创建一些快捷方式,因此我需要防止Meta键(在Mac上)和Ctrl键(在其他Os)

在我的订阅方法中,我使用以下内容。 但是,并没有公开的使用prevent Default的方法。

let
            decoder : Decode.Decoder Msg
            decoder =
               keyDecoder
                    |> Decode.andThen
                        (\( keyCode, ctrlKey ) ->
                                case keyCode of
                                    39 ->
                                       Decode.succeed <| ShortCutNext

                                    37 ->
                                        Decode.succeed <| ShortCutPrevious

                                     _ ->
                                        Decode.fail ""

                    )
    in
    Sub.batch
        [ Browser.Events.onKeyDown  decoder]



keyDecoder : Decode.Decoder ( Int, Bool )
keyDecoder =
    Decode.map2 (\a -> \b -> ( a, b ))
        (Decode.field "keyCode" Decode.int)
        (Decode.field "metaKey" Decode.bool)

注意:该事件在页面本身上,而不在诸如textarea之类的任何元素上,因此Html.Events.custom“ keydown”选项解码器不适用。

0 个答案:

没有答案