【问题标题】:How to combine inline JavaScripts into one?如何将内联 JavaScript 合二为一?
【发布时间】:2014-08-29 08:27:08
【问题描述】:

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

这个 sn-p 有效。

<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 个内联脚本组合成一个 &lt;script&gt; 标记在这里会有什么不同。

有什么想法吗?

【问题讨论】:

  • 我想知道之前的GA_ 调用之一(在 first 块中)是否添加了 dynamic 脚本元素? - 如果报告正确,这是我能想到的行为的唯一原因。如果是这样,那么组合当前的 SCRIPT 元素(至少是这两个元素)将不起作用。结合最后两个 SCRIPT 应该可以正常工作。
  • 这可能是时间问题吗?也许 GS_googleAddAdSenseService(XXX);或 GS_googleEnableAllServices();在您调用 AddSlot 之前还没有完成?
  • @bobbyg603 但它不像第二个 &lt;script&gt; 块会等待第一个 &lt;script&gt; 块完成,对吧?
  • 可能,我没有给你一个明确的答案。

标签: javascript


【解决方案1】:

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

【讨论】:

  • 我也只是在挖掘代码。谢谢,是的,这很复杂(甚至很愚蠢),但这就是它在这种情况下的工作方式。感谢您的帮助。
【解决方案2】:

检查一下: https://support.google.com/dfp_sb/answer/112649?hl=en

这是文档支持的部分:

DFP 广告管理系统标准版需要不同的 JavaScript 块,如下所述。 不要组合 JavaScript 块,否则您的代码可能会中断。

他们已经明确提到你不应该组合 Javascript 块!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2022-08-17
    • 2019-10-01
    相关资源
    最近更新 更多