我有javascript从页面获取scrollHeight。
<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 :(得分:1)
您似乎缺少Django模板和浏览器内JavaScript之间的重要区别:
Django在服务器端执行,而JavaScript则在客户端执行。
这意味着(在单个请求中)Django模板总是在 JavaScript之前执行(因为它是由服务器在页面发送到客户端之前执行的)。因此,绝对不可能以你想要的方式混合JavaScript和Django代码。
在浏览器中运行的JavaScript意味着模板已经在服务器上进行了评估并发送到浏览器。在这一点上设置模板上下文只是为时已晚。火车已离开车站。
你需要接受这种方法是不可能的,并找到另一种方法来实现你的目标。我不会就此向您提供建议,因为我没有关于您正在处理的功能的任何具体信息。在这一点上,我可以推测。您很可能应该从服务器发送一个通用的高度独立版本的站点,然后使用JavaScript来应用特定height
值产生的更改。或者可能只是重写你的(CSS?)代码,因此不再需要这个值 - 如果你的情况甚至可以这样做。
答案 1 :(得分:0)
因为 - 在同一个请求中 - 第一个django模板代码在服务器上运行而之后 js代码在浏览器中运行,您可以在js代码中轻松使用django模板上下文值但是不相反。您可以通过AJAX将js值发送到服务器。但这是在第二次 - 虽然是异步 - 请求。