如何将内联JavaScripts合并为一个?

时间:2014-08-28 23:43:59

标签: javascript

我正在修复我们在其中一个网站上使用的模板,其中包含以下代码

此代码段有效。

<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>标记中会有所不同。

有什么想法吗?

2 个答案:

答案 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块!

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