Shopify checkout.liquid中window.location.hostname判断脚本失效问题
Shopify结账页面特定区域脚本触发问题解决
问题根源
你的window.location.hostname判断逻辑在checkout.liquid失效,是因为Shopify结账页面的域名并非你店铺的ca/au子域名——实际结账页面使用的是Shopify官方结账域名(如checkout.shopify.com)或自定义结账域名,不会包含你店铺的区域子域名标识,导致判断条件永远不成立,脚本完全不执行。
可行解决方案
方案1:用Shopify全局JS变量判断地域
结账页面会自动暴露Shopify.country全局对象,直接通过国家代码判断:
if (Shopify.country.isoCode === 'CA' || Shopify.country.isoCode === 'AU') { // 执行你的脚本逻辑 }
方案2:用Liquid模板变量提前控制脚本渲染(更可靠)
既然是在checkout.liquid中,直接用Shopify的服务器端Liquid变量判断,只在目标区域输出脚本:
{% if shop.country_code == 'CA' or shop.country_code == 'AU' %} <script> // 这里直接编写你的脚本,无需前端判断 // run script </script> {% endif %}
验证方式
- 方案1:在结账页面打开浏览器控制台,输入
Shopify.country.isoCode,可查看当前生效的国家代码,确认逻辑正确性。 - 方案2:Liquid是服务器端渲染,会根据当前店铺的区域配置直接决定是否渲染脚本,彻底规避前端域名判断的问题。
内容的提问来源于stack exchange,提问作者Adam Casper
相关产品推荐
相关产品推荐

