Google Tag Manager自定义变量模板中injectScript无法注入脚本的问题求助
Troubleshooting: injectScript Not Loading VK OpenAPI in GTM Custom Variable Template
我一眼就看到了你代码里的关键问题——调用injectScript时,你把pixelSend()作为成功回调传进去了,这会立即执行pixelSend函数,而不是把它作为脚本加载完成后的回调函数传递给injectScript。
injectScript的第二个参数要求是一个函数引用,而不是函数执行后的结果。你现在传的是pixelSend()执行后的返回值(你的pixelSend函数里没有return语句,所以实际传的是undefined),这完全不符合injectScript的参数预期,大概率就是脚本从未被注入的核心原因。
修正后的代码
把原来的调用代码:
injectScript('https://vk.com/js/api/openapi.js', pixelSend(), data.gtmOnFailure );
改成传递函数引用的形式:
injectScript('https://vk.com/js/api/openapi.js', pixelSend, // 直接传函数本身,不要加括号执行 data.gtmOnFailure );
如果之后需要给pixelSend传递特定参数(比如事件类型、参数等),可以用箭头函数包裹来实现:
injectScript('https://vk.com/js/api/openapi.js', () => pixelSend('your-target-event', yourEventParams, 0), // 按需调整参数 data.gtmOnFailure );
额外确认点
你已经验证了queryPermission('inject_script', 'https://vk.com/js/api/openapi.js')返回true,排除了权限问题;原生JS注入脚本成功,也说明资源本身可正常访问,没有跨域或网络层面的障碍。修正回调的传递方式后,应该就能正常加载VK的openapi.js,全局VK对象也会如期生成了。
内容的提问来源于stack exchange,提问作者EdG
相关产品推荐
相关产品推荐

