2012-08-31 36 views
1

我試圖將Leaflet地圖添加到我的應用中,並且需要在之後添加一些JS代碼,其中包括Leaflet的CSS和JS。 Opa服務器在<head> HTML節點中添加了CSS,但在生成的所有XHTML代碼之後包含資源JS文件的<script>。那麼,如何爲地圖添加代碼?在資源JS文件後執行自定義生成的JavaScript

我看了看GMaps API,但很難相信這是做這件事的好方法。這些圖被添加了XHTML:

<script> 
Xhtml.of_string_unsafe("some JS function loading the map"); 
</script> 

地圖裝載機書面完全在JS作爲字符串結合onready,生成新的JavaScript DOM元素,並將其附加到該文件的末尾。

我可以改變JS文件被包含到文檔開頭的地方嗎?

回答

1

這裏是一個示例代碼,將讓你定義自己的頭:

headers = 
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.4.4/leaflet.css" /> 
    <script src="http://cdn.leafletjs.com/leaflet-0.4.4/leaflet.js"></script> 

Server.start(
    Server.http, { 
    dispatch: function(_) { 
     Resource.full_page(
     "Leaflet", 
     <>Hello Leaflet</>, headers, {success}, 
     [] 
     ) 
    } 
    } 
) 

否則,如果你想在年底追加,你可以使用:

Resource.register_external_js("/path/to/my/js")

Resource.register_external_css("/path/to/my/css")

這很有用,你需要首先加載jQuery(jQuery被嵌入到all.js中,在文檔的末尾T)。

+0

它的工作原理,謝謝你:)雖然,現在我不考慮在文檔末尾添加新的腳本元素這樣糟糕的主意。在GMaps API中我不喜歡使用太多的content_unsafe來內聯JS。 –

0

雖然弗雷德指出,leaflet.js可以很容易地在文檔的頁眉在內,我留在JS的附加給文檔的與最終的地圖:

function onready(_) { 
    body = Dom.select_body(); 
    *body =+ <script>{Xhtml.of_string_unsafe(script)}</script>; 
    void; 
} 
<div id="{map_id}" onready={function (_) Dom.bind(Dom.select_document(), {ready}, onready);void}></div>