如果使用Smarty模板在jQuery中应用该条件,我希望包含一个文件我的代码:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
// here is the include file
{include= file.tpl}
}
</script>
{/literal}
尝试:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
{/literal}{include= file.tpl}{literal}
}
</script>
{/literal}
我有好消息也有坏消息。首先,坏消息是:这个代码永远不会起作用,因为你的Smarty模板已经在服务器上进行了评估,以便生成HTML并将其发送到浏览器,而你的Javascript代码只有在请求响应到浏览器后才会进行评估。因此,{include= file.tpl}
将生成到HTML中,特别是生成到script
标记中,从而产生不需要的结果。
好消息是这个问题是可以解决的。解决方案可以是
生成文本HTML并默认隐藏
在这种情况下,如果满足条件,您可以更改文字模板的display
CSS属性。
或者,当您需要文字时,您可以直接POST
如果JS条件为true,那么您可以向服务器发送AJAX帖子,服务器将使用模板进行回复。
最后,您可以使用媒体查询
如果这只是关于样式的,那么您可以使用[media querys][1]。
您还可以使用link
标记的media
属性来加载正确的样式表。[1] :https://www.w3schools.com/css/css_rwd_mediaqueries.asp