javascript - document.write 注入(inject) javascript 的时间

标签 javascript asynchronous google-analytics timing

看起来这段代码导致了计时问题。执行该脚本后什么时候 ga.js 会运行?如果以这种方式注入(inject),我们如何确定 ga.js 已经执行了? (另一个组件依赖它)

 <script type="text/javascript">
                var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
                document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>

最佳答案

我知道这并不能严格回答您有关 document.write 的问题,但它应该可以解决您的问题。

ga.js 被设计为异步使用。您应该能够执行以下操作:

var _gaq = _gaq || [];
_gaq.push(function(){
    // Use _gat here freely
});

加载到 _gaq 中的函数将在 ga.js 加载后处理。

此外,您似乎正在使用此代码的相当旧的版本。较新的版本不使用 document.write。

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

如果您决定更新分析跟踪代码,我建议您直接跳到 Universal Analytics,它使用名为analytics.js 的不同文件。

关于javascript - document.write 注入(inject) javascript 的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217794/

相关文章:

javascript - 谨防javascript的痛点要当心

javascript - Async.eachSeries 并行执行

c# - 获取异步结果死锁(尽管将 configure await 设置为 false)

asp.net - ASP.NET WebApi 中异步调用的本地化

Magento Google Analytics 代码未显示

javascript - 尝试将 SVG 对象的 javascript 数组保存到 SQL

javascript - 无法将字符串变量传递给 JS 日期对象

javascript - 从输入文本中获取属性值

google-analytics - CasperJS captureSelector不捕获选择器,而是捕获整个页面

javascript - Google Analytics - 调整后的跳出率没有太多数据