请注意:我找不到在这里可以使用的解决方案,因此我使用了相同的端口。
我需要使用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”选项解码器不适用。