Shopify Liquid json 输出商品名带引号把脚本截断
现象#
把商品数据塞进 script 给前端用,标题带英文双引号或结束标签时,控制台报 Unexpected token,页面下半部分脚本全部失效。
原因#
- json 只保证 JSON 语法合法,不会针对 HTML 上下文转义 script 结束标签
- 手写字符串拼接时没有转义引号和反斜杠,JSON 在第一个引号处就断了
- 标题中的换行与 emoji 未处理,输出到内联脚本后解析中断
- 把 json 结果写进 data- 属性时又漏了一次 escape
处理步骤#
- 统一用
{% assign payload = product | json %}生成,不要手写引号拼接 - 放进页面时用
<script type="application/json">数据块,前端再 JSON.parse - 写进属性时加一层转义:
data-product="{{ product | json | escape }}" - 前端解析后通过 textContent 插入标题,不要直接拼 innerHTML
- 用一个标题含双引号、尖括号和 emoji 的测试商品完整验证
验收标准#
该商品页控制台无解析错误,前端 JSON.parse 拿到的 title 与原标题逐字一致,页面其余脚本正常执行。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。