我正在修复我们在其中一个网站上使用的模板,其中包含以下代码
此代码段有效。
<script type="text/javascript" src="http://partner.googleadservices.com/gampad/google_service.js"></script>
<script type="text/javascript">
GS_googleAddAdSenseService("ca-pub-123");
GS_googleEnableAllServices();
</script>
<script type="text/javascript">
GA_googleAddSlot("ca-pub-123", "Foo");
GA_googleAddSlot("ca-pub-123", "Bar");
</script>
<script type="text/javascript">
GA_googleFetchAds();
</script>
我尝试过连接像这样的静态脚本
<script type="text/javascript" src="http://partner.googleadservices.com/gampad/google_service.js"></script>
<script type="text/javascript">
GS_googleAddAdSenseService("ca-pub-123");
GS_googleEnableAllServices();
GA_googleAddSlot("ca-pub-123", "Foo");
GA_googleAddSlot("ca-pub-123", "Bar");
GA_googleFetchAds();
</script>
但是,现在我收到了错误
Uncaught ReferenceError: GA_googleAddSlot is not defined
关于JavaScript的内容,我没有菜鸟,但我无法想象为什么将3个内联脚本合并到一个<script>
标记中会有所不同。
有什么想法吗?
答案 0 :(得分:3)
google_service.js
未定义GA_googleAdSlot
,但定义了GS_googleEnableAllServices
。调用GS_googleEnableAllServices
时,它会使用document.write
插入一个新的脚本元素,该元素会加载GA_googleAdSlot
的定义。在当前正在执行的脚本元素结束之后,新的脚本元素将插入到文档中。这很复杂,但这是你的答案。
答案 1 :(得分:1)
检查一下: https://support.google.com/dfp_sb/answer/112649?hl=en
这是文件支持的一部分:
DFP广告管理系统标准版需要不同的JavaScript块,如下所述。 不要合并JavaScript块,否则您的代码可能会中断。
他们已经清楚地提到你不应该组合Javascript块!
我不知道为什么,但只要文件中提到,你就必须遵守规则。