嗨,我正在尝试将GPT(Google发布标签)广告嵌入到我的网络应用程序中(效果很好)。但是,我被要求确保客户端可以编辑和修改GPT HTML脚本,并在实时发送更改之前检查更改。我的问题是,当我将修改后的广告HTML和脚本重新插入到DOM中(以供查看)时,广告脚本不再能够被浏览器执行(javascript错误)。
您好,我尝试通过以下网站寻求帮助:https://support.google.com/admanager#topic=7505988
除了尝试GPT API参考中提到的各种操作(例如destroySlots选项)之外,我还可以重置googletag javascript对象以重新插入脚本
https://developers.google.com/doubleclick-gpt/reference
请查看以下我想实现的最小可复制示例: https://codepen.io/angusgrant/pen/eawbLV
这是我正在页面加载时加载的HTML(脚本),需要能够通过JS重新插入DOM:
<div id="addSlot1" style="height:600px; width:160px;">
<script>
googletag.cmd.push(function()
{
googletag.defineSlot('/1008130/Wide_Skyscrape', [160, 600], 'addSlot1')
.addService(googletag.pubads())
.setTargeting("Pub_code", "asnr");
googletag.enableServices();
googletag.display('addSlot1');
});
</script>
</div>
我希望广告能够(仍然)显示(对文本区域中HTML所做的任何修改也将在网页中呈现)。
我实际遇到的是,广告代码已按预期方式(使用完全相同的HTML / Javascript代码)加载到DOM中,并且浏览器尝试呈现更改,但在开发人员工具中出现错误:
Exception in queued GPT command TypeError: Cannot read property 'addService' of null
并且广告不再呈现。
请告知我如何重新编写GPT HTML / scriptlet,以便它在页面加载时以及重新插入DOM时运行?