2016-11-15 182 views

回答

5

在初始化時,您可以使用Html.programWithFlags將信息從Javascript傳遞到Elm。

假設你可以從用戶代理推斷的瀏覽器,你可以做這樣的事情:

type alias Flags = 
    { userAgent : String } 

init應該是這樣的:

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

main = 
    programWithFlags { init = init, ... } 

以及使用JavaScript,你會通過標誌in this like:

var app = Elm.Main.fullscreen({ 
    userAgent: navigator.userAgent 
}); 

備註:用戶代理可能不是足以完全檢測瀏覽器。你可以看到this StackOverflow answer提供更可靠的檢測。無論哪種方式,最終的結果是你會發送一些標誌一起到初始化的Elm應用程序。

More info on Flags can be found here.

+0

任何方式從Elm反應堆做到這一點? –

+1

否 - 榆樹反應堆不允許自定義端口或標誌。但是,如果你想爲Elm提供一個輕量級的開發服務器,請查看[elm-live](https://github.com/tomekwi/elm-live)。這與elm-reactor具有相同的感覺,但允許自定義頁面打包並導入Elm文件。 –

+0

我不認爲elm-live支持0.18 – Schpaencoder