如何将内联JavaScripts合并为一个

How to combine inline JavaScripts into one?

本文关键字:一个 合并 JavaScripts      更新时间:2023-09-26

我正在修复我们在一个网站上使用的模板,该模板具有以下代码

这个片段有效。

<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>标签中会有什么不同。

有什么想法吗?

google_service.js没有定义GA_googleAdSlot,但定义了GS_googleEnableAllServices。当调用GS_googleEnableAllServices时,它使用document.write插入一个新的脚本元素,该元素加载GA_googleAdSlot的定义。新的脚本元素在当前正在执行的脚本元素结束后插入到文档中。这很复杂,但这是你的答案。

看看这个:https://support.google.com/dfp_sb/answer/112649?hl=en

这是一份支持文件:

DFP Small Business需要不同的JavaScript块,如下所述不要组合JavaScript块,否则您的代码可能会中断

他们明确提到,您不应该组合Javascript块!

我不知道为什么,但只要文件中提到了这一点,你就必须遵守规则。