如何在Elm中检测浏览器

Rei*_*ica 3 browser-detection elm

如何从Elm检测浏览器?

具体来说,我希望能够判断网络应用程序是否在平板电脑上运行(iPad上的Safari等).

Cha*_*ert 7

您可以使用Html.programWithFlags在初始化时将信息从Javascript传递到Elm.

假设您可以从用户代理推断浏览器,您可以执行以下操作:

type alias Flags =
    { userAgent : String }
Run Code Online (Sandbox Code Playgroud)

init会看起来像这样:

init : Flags -> ( Model, Cmd Msg )
init flags =
  ...

main =
    programWithFlags { init = init, ... }
Run Code Online (Sandbox Code Playgroud)

从Javascript,你会像这样传递标志:

var app = Elm.Main.fullscreen({
    userAgent: navigator.userAgent
});
Run Code Online (Sandbox Code Playgroud)

附注:用户代理可能不足以完全检测浏览器.您可以看到这个StackOverflow答案提供更可靠的检测.无论哪种方式,最终结果是你会在init上向Elm应用程序发送某种标志.

有关Flags的更多信息,请点击此处.