[英]How to use JavaScript variable in Haml?
我有一个javascript函数(在application.js中包含在所有页面上),该函数可检测浏览器是否具有Flash支持并输出true或false。
现在,我想显示一个基于Flash的价格图表(如果为true),以及一个基于HTML / Javascript的图表(如果为false)。
在Haml页面的顶部,我尝试将javascript函数的结果传递给HAML,如下所示:
:javascript
if (browserHasFlashSupport())
#{showFlashChart = true}
并像下面这样在页面的更下方的Haml中使用它:
- if showFlashChart
# show flash chart
- else
# show html/js chart
但是无论如何,我都无法使用它作为ruby变量showFlashChart为“ true”-但是在控制台中,javascript函数browserHasFlashSupport()像应该的那样返回true / false,因此我必须做错了事。
我猜想直接在HAML中使用javascript函数“返回true / false”可能是最好的解决方案,例如- if browserHasFlashSupport()
可行的话,以及“正确”的方法呢?
我将不胜感激,谢谢:-)
PS。 也将非常欢迎您提供任何有关如何避免在HAML文件中使用内联javascript的提示。
您的解决方案的问题:
您的javascript函数必须在客户端的浏览器中运行,以检测其是否具有Flash支持。
当用户想要从您的网站获取页面时,将发生以下情况:
<script>
标记添加到输出html页面。 这些标记将包含您脚本的URL(在application.js
或其他文件中定义)。 然后,服务器以该html页面响应。 <script>
标记,并自动从指定的URL下载javascript源。 您会看到您的haml模板是在步骤2上呈现的,并且您的javascript函数可能仅在步骤5上运行。
这是一个简化的案例。 但是不可能将步骤5置于步骤2之前(不使用Ajax或cookie)。 这就是为什么你的方法是不可能的。
希望这是描述性的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.