我正在使用sitemesh作为基于弹簧的网站。问题是我有一些javascript,我希望它只使用jquery $(function() { ... })
在一个特定页面的onload事件上运行,而不是在每个页面上运行。
我已将jquery.js包含在装饰者的底部,身体后面。因此,如果我尝试在我的装饰页面的主体中包含<script>
标记,则不会执行该脚本,因为在之后将加载的jquery!我知道我可以在我的装饰器的标题中包含jquery.js,所以它将在装饰页面中的自定义脚本之前,但我不喜欢该解决方案,因为它将在我的页面的头部包含javascritp。
所以我希望在我的sitemesh装饰器中有一个占位符,我的装饰页面中的自定义将被放置(你可以理解我来自django世界:p)。这可能吗 ?你有什么建议吗?或者我应该把我的jquery.js放在标题中并完成它?
答案 0 :(得分:8)
要回答我的问题,经过一些搜索,我找到了以下解决方案:
我在装饰器页面的末尾添加了以下内容(包括jquery.js之后)
<decorator:getProperty property="page.local_script"></decorator:getProperty>
我还添加了以下内容
<content tag="local_script"> <script> $(function() { alert("Starting"); }); </script> </content>
装饰结果页面包含local_script标签的内容,正好在我想要的位置,一切正常:)
我不知道为什么sitemesh的这个功能没有被正确记录 - 使用它你可以有一个很好的模板行为(如django)。