Magento 2网站GTM代码j.src值为空的解决方法求助
Magento 2中GTM代码j.src为空的解决方法
我们运营的Magento 2网站已添加Google Tag Manager(GTM)代码片段,但页面源代码中j.src的值为空,预期应为j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;,实际显示为j.src=''。使用的GTM代码如下:
<!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-XYZ');</script> <!-- End Google Tag Manager -->
解决方法:
- 检查JS压缩/合并设置:进入Magento后台
Stores > Configuration > Advanced > Developer > JavaScript Settings,暂时关闭Merge JavaScript Files和Minify JavaScript Files选项,刷新页面查看j.src是否恢复正常。若正常,重新生成静态文件(执行命令bin/magento setup:static-content:deploy),再尝试开启压缩,确保GTM代码不被错误处理。 - 排查第三方扩展冲突:禁用所有性能优化类扩展(如缓存、加速插件),逐一重新启用并测试,找到导致代码被修改的扩展。更新该扩展版本或调整其设置,排除对GTM脚本的干扰。
- 检查主题布局文件:若GTM代码是通过主题的
default_head_blocks.xml添加的,检查布局文件是否存在语法错误,或主题模板是否对head区域的脚本做了过滤。确保代码完整嵌入,未被主题自定义逻辑截断。 - 调整代码格式:将GTM代码改为单行格式,避免换行导致Magento解析器错误截断:
重新添加后刷新页面测试。<!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-XYZ');</script> <!-- End Google Tag Manager --> - 清空Magento缓存:进入后台
System > Cache Management,清空所有缓存类型,确保修改后的代码能正确渲染到前端页面。
内容的提问来源于stack exchange,提问作者sumeet bajaj
相关产品推荐
相关产品推荐

