2012-08-31 38 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>