4

我正在将 sitemesh 用于基于弹簧的站点。问题是我有一些 javascript,我希望它只在一个使用 jquery 的特定页面的 onload 事件上运行,$(function() { ... })而不是在每个页面上运行。

我已将 jquery.js 包含在我的装饰器底部,在正文之后。所以,如果我尝试在我的装饰页面的正文中包含一个标签,那么脚本将不会被执行,因为之后<script>会加载 jquery !我知道我可以将 jquery.js 包含在我的装饰器的标题中,因此它将位于装饰页面中的自定义脚本之前,但是我不太喜欢该解决方案,因为它会在我的页面头部包含 javascritp。

所以我想在我的站点网格装饰器中放置一个占位符之类的东西,我的装饰页面中的自定义将被放置在其中(你可以理解我来自 django 世界:p)。这可能吗 ?你有什么建议还是我应该把我的 jquery.js 放在标题中并完成它?

4

1 回答 1

8

为了回答我的问题,经过一番搜索,我找到了以下解决方案:

我在装饰器页面的末尾添加了以下内容(包括 jquery.js 之后)

<decorator:getProperty property="page.local_script"></decorator:getProperty>

我还添加了以下内容

<content tag="local_script">
<脚本>
  $(函数(){
    警报(“开始”);
  });
</脚本>
</内容>

装饰的结果页面包含 local_script 标记的内容,正是我想要它们的地方,一切正常:)

我不知道为什么没有正确记录 sitemesh 的这个特性——使用它你可以有一个很好的模板行为(比如 django)。

于 2013-10-01T13:18:10.890 回答