2013-10-01 56 views
4

我正在使用sitemesh基於春天的網站。問題是我有一些JavaScript,我希望它只能使用jquery $(function() { ... })而不是在每個頁面上的一個特定頁面的onload事件上運行。Sitemesh每頁自定義javascript

我已經在我的裝飾器的底部包含了jquery.js,在body之後。因此,如果我嘗試在我的裝飾頁面的主體中包含<script>標記,腳本將不會被執行,因爲jquery將在之後加載!我知道我可以將jquery.js包含在裝飾器的頭文件中,因此它將位於裝飾頁面中的自定義腳本之前,但是我不太喜歡該解決方案,因爲它將在我的頁面頭部包含javascritp。

所以我想在我的sitemesh裝飾器中放置一個佔位符,在我的裝飾頁面的自定義位置將被放置(因爲您可以理解我來自django世界:p)。這可能嗎 ?你有什麼建議嗎?或者我應該把我的jquery.js放在標題中並完成它?

回答

6

回答我的問題,某些搜索後,我發現了以下解決方案:

我增加了以下我的裝飾頁的末尾(後包括的jquery.js)

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

我還添加了以下

 
<content tag="local_script"> 
<script> 
    $(function() { 
    alert("Starting"); 
    }); 
</script> 
</content> 

裝飾結果頁面包含的local_script標籤的內容正是我希望他們和一切運行良好:)

我不知道爲什麼sitemesh的這個特性沒有正確記錄 - 使用這個,你可以有一個很好的模板行爲(如django)。

+0

不錯!感謝這! :) – dork

+1

完美!謝謝 – dtelaroli