如何从Elm检测浏览器?
具体来说,我希望能够判断网络应用是否在平板电脑上运行(iPad上的Safari等)。
答案 0 :(得分:7)
您可以使用Html.programWithFlags
在初始化时将信息从Javascript传递到Elm。
假设您可以从用户代理推断浏览器,您可以执行以下操作:
type alias Flags =
{ userAgent : String }
您的init
看起来像这样:
init : Flags -> ( Model, Cmd Msg )
init flags =
...
main =
programWithFlags { init = init, ... }
从Javascript中,您可以像这样传递标记:
var app = Elm.Main.fullscreen({
userAgent: navigator.userAgent
});
附注:用户代理可能不足以完全检测浏览器。您可以看到提供更可靠检测的this StackOverflow answer。无论哪种方式,最终结果是你会在init上向Elm应用程序发送某种标志。
答案 1 :(得分:2)
您可以使用elm-vendor
包。
http://package.elm-lang.org/packages/coreytrampe/elm-vendor/latest