16
写 var title = "{{ product.title }}";,商品名里带英文双引号,整个脚本块直接语法错误,页面交互全挂。
写 var title = "{{ product.title }}";,商品名里带英文双引号,整个脚本块直接语法错误,页面交互全挂。
先把判断放在前面:Liquid 输出的是原始字符串,不会为 JS 上下文做转义," 会提前闭合字符串。
{{ product.title | json }},它会输出合法的 JSON 字符串(带引号),不要再手写外层引号。{{ product | json }},但注意这会把体积很大的字段一起带出来,酌情用 | json 配合 map 精简。<script type="application/json" id="product-data"> 承载,JS 侧 JSON.parse 读取。| escape 只适合 HTML 上下文,JS 字符串上下文必须用 json,两者不能混。还有一个更隐蔽的坑:{{ product.description }} 里带 </script> 会直接截断脚本块。用 json 过滤器转义后仍可能保留 <,稳妥做法是把数据放在 <script type="application/json"> 里,并过滤掉 </。
写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。