The focus
function in the elm-lang/dom package is used to set focus with a Task
(without using any port
s or JavaScript).
Internally it uses requestAnimationFrame
to ensure any new DOM updates are rendered before it tries to find the DOM node to focus on.
An example use:
type Msg
= FocusOn String
| FocusResult (Result Dom.Error ())
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
FocusOn id ->
( model, Dom.focus id |> Task.attempt FocusResult )
FocusResult result ->
-- handle success or failure here
case result of
Err (Dom.NotFound id) ->
-- unable to find dom 'id'
Ok () ->
-- successfully focus the dom
Full example on Ellie
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…