2016-02-21 100 views
1

我有JavaScript從頁面獲取scrollHeight。Django從模板寫入上下文

<script type="text/javascript"> 

     var body = document.body, 
     html = document.documentElement; 

     var height = Math.max(body.scrollHeight, body.offsetHeight, 
            html.clientHeight, html.scrollHeight, html.offsetHeight); 
     document.write(height); 
</script> 

在我的情況下,我需要在模板標籤中得到這個高度。是否有可能從模板編寫此scrollHeight號碼上下文?

+0

你是指在同一頁面請求? –

+0

是的。所以在我的模板標籤中,我可以通過scrollHeight計算頁碼。 –

回答

0

因爲 - 在相同的請求期間 - 第一個Django模板代碼在服務器和 JS代碼是你可以很容易地在你的js代碼使用Django模板背景值的瀏覽器中運行,但不會反轉之後運行。您可以通過AJAX將js值發送​​到服務器。但是這在第二個 - 儘管是異步的 - 請求。

+0

但在我的情況下,我需要反向。那麼也許我可以從JavaScript寫請求或上下文?可能嗎? –

1

還有就是你似乎缺少Django模板之間並在瀏覽器的JavaScript一個重要的區別:

Django是在服務器端執行,而JavaScript是在客戶端執行。

這意味着,(在單個請求)Django模板總是之前的JavaScript執行(因爲它是由服務器執行時,之前的頁面發送到客戶端)。因此,以您想要的方式混合使用JavaScript和Django代碼是絕對不可能的。

在瀏覽器中運行的JavaScript意味着模板已經在服務器上評估併發送到瀏覽器。在這一點上,設置模板上下文很簡單。火車已經離開車站。

您需要接受這種方法是不可能的,並找到另一種方法來實現您的目標。我不會就此提出建議,因爲我沒有關於您正在處理的功能的任何特定信息。在這一點上,我只能推測。很可能你應該從服務器發送一個通用的獨立於你的站點的版本,然後使用JavaScript來應用從特定height值產生的更改。或者也許只是重寫你的(CSS?)代碼,以便不再需要這個值 - 如果這在你的情況下甚至是可能的。