Liquid中JS代码无法在控制台输出,求修正方案
接触Liquid模板开发已有几周时间,尝试在popup-navigation.liquid文件中通过两种方式编写JavaScript代码,但两种方式的代码均无法在浏览器控制台输出内容:
方式一:使用Liquid {% javascript %} 标签
popup-navigation.liquid {% javascript %} console.log("coucou") console.log("{{ section.settings.type }}") {% endjavascript %} <div class="popup-navigation js-popup-navigation" data-popup-content> <div id="popup-navigation-home"> <div style="height: 50px" class="popup-navigation__head pt-20 pb-10 px-10 d-lg-none"> <div class="container">
方式二:直接使用HTML <script> 标签
popup-navigation.liquid <script> console.log("coucou") console.log("{{ section.settings.type }}") </script> <div class="popup-navigation js-popup-navigation" data-popup-content> <div id="popup-navigation-home"> <div style="height: 50px" class="popup-navigation__head pt-20 pb-10 px-10 d-lg-none"> <div class="container">
以下是针对问题的排查和解决步骤:
确认section已被正确引用
Liquid section代码仅在被主题模板调用时才会渲染。打开浏览器开发者工具的Elements面板,搜索popup-navigation相关DOM或对应的<script>标签,确认该section代码是否已输出到页面。若未找到,需在主题布局文件(如theme.liquid)或父模板中添加{% section 'popup-navigation' %}来引用该section。验证
section.settings.type的有效性
若section.settings.type未在该section的schema中定义,Liquid会输出空字符串,可能引发JS语法问题。检查该section的schema配置,确保type字段已正确声明,且在主题自定义面板中已设置对应值。可先将{{ section.settings.type }}替换为固定字符串(如"test")测试,确认控制台是否能正常输出。调整
{% javascript %}标签的使用方式
部分Shopify主题框架(如Dawn)的{% javascript %}标签会将JS代码打包到外部文件,而非内联执行,导致代码无法立即输出日志。这种情况下建议改用内联<script>标签,并添加DOM加载监听确保代码执行时机正确:<script> document.addEventListener('DOMContentLoaded', function() { console.log("coucou") console.log("{{ section.settings.type }}") }); </script>检查浏览器控制台设置
确认控制台日志级别设为"All",未启用过滤选项;同时查看是否有语法报错,这类错误会阻止后续JS代码执行。清除缓存测试
修改主题文件后,使用浏览器隐私窗口或清除缓存再测试,避免加载旧的缓存内容。
内容的提问来源于stack exchange,提问作者Redskinsjo

