javascript - 如何延迟加载外部 JS 文件(Google Analytics)?

标签 javascript html blocking

我正在使用以下代码加载我的 Google Analytics(外部 javascript),其目的是阻止呈现。

但是,同时使用 YSlow 和 Safari Web Inspector - 网络流量清楚地表明 ga.js 脚本仍在阻止渲染。

/*
http://lyncd.com/2009/03/better-google-analytics-javascript/
Inserts GA using DOM insertion of <script> tag and "script onload" method to
initialize the pageTracker object. Prevents GA insertion from blocking I/O!

As suggested in Steve Souder's talk. See:
http://google-code-updates.blogspot.com/2009/03/steve-souders-lifes-too-short-write.html
*/

/* acct is GA account number, i.e. "UA-5555555-1" */
function gaSSDSLoad (acct) {
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."),
      pageTracker,
      s;
  s = document.createElement('script');
  s.src = gaJsHost + 'google-analytics.com/ga.js';
  s.type = 'text/javascript';
  s.onloadDone = false;
  function init () {
    pageTracker = _gat._getTracker(acct);
    pageTracker._trackPageview();
  }
  s.onload = function () {
    s.onloadDone = true;
    init();
  };
  s.onreadystatechange = function() {
    if (('loaded' === s.readyState || 'complete' === s.readyState) && !s.onloadDone) {
      s.onloadDone = true;
      init();
    }
  };
  document.getElementsByTagName('head')[0].appendChild(s);
}

/* and run it */
gaSSDSLoad("UA-5555555-1");

关于如何使用 JavaScript 延迟加载 ga.js 文件的任何想法,因为在呈现整个页面之前,上面的代码似乎没有按预期执行,这样我就不会阻塞渲染?

最佳答案

/* and run it */
gaSSDSLoad("UA-5555555-1");

在页面完成呈现之前不要“运行它”。那就是:onload 或其他更远的地方。不要在你的内联脚本 block 本身中包含以上几行,否则你将一无所获。

关于javascript - 如何延迟加载外部 JS 文件(Google Analytics)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546218/

相关文章:

c++ - Pthread 阻塞/可更新计时器

c++ - 如何在同一个进程中操作多个 ZeroMQ 套接字类型?

javascript - 如何在 TailwindCSS 中拥有动态 'primary' 类?

javascript - HTML 行跨度与 css 元素冲突

javascript - 如果我的文本长度在 li div 中很大,那么 div 跨度和 li 高度会自动调整..?

html - 如何将 "li"中的多个图像居中对齐

javascript - 如何在 TypeScript 中将函数类型声明为参数

javascript - 什么会导致 parse.com 云代码计数中出现 "Request timed out"?

javascript - 在运行时初始化 HTML 模板图像属性

python - 如何让多个 gevent 服务器永远服务?