1

我正在尝试将Leaflet地图添加到我的应用程序中,它需要在包含 Leaflet 的 CSS 和 JS之后添加一些 JS 代码。Opa 服务器在<head>HTML 节点中添加 CSS,但<script>在所有生成的 XHTML 代码之后包含资源 JS 文件。那么,如何为地图添加代码呢?

我查看了GMaps API,但很难相信这是一个好方法。地图是使用 XHTML 添加的:

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

完全用 JS 编写的地图加载器,因为字符串绑定到 onready,生成新的 javascript DOM 元素,并将其附加到文档的末尾。

我可以将包含JS文件的位置更改为文档的开头吗?

4

2 回答 2

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 中,位于文档的末尾)。

于 2012-08-31T16:59:29.610 回答
0

尽管正如 Fred 指出的那样,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>
于 2012-08-31T22:28:38.207 回答