-
-
Save ismyrnow/6252718 to your computer and use it in GitHub Desktop.
define(function (require) { | |
var module; | |
// Setup temporary Google Analytics objects. | |
window.GoogleAnalyticsObject = "ga"; | |
window.ga = function () { (window.ga.q = window.ga.q || []).push(arguments); }; | |
window.ga.l = 1 * new Date(); | |
// Immediately add a pageview event to the queue. | |
window.ga("create", "{{TrackingID}}", "{{Domain}}"); | |
window.ga("send", "pageview"); | |
// Create a function that wraps `window.ga`. | |
// This allows dependant modules to use `window.ga` without knowingly | |
// programming against a global object. | |
module = function () { window.ga.apply(this, arguments); }; | |
// Asynchronously load Google Analytics, letting it take over our `window.ga` | |
// object after it loads. This allows us to add events to `window.ga` even | |
// before the library has fully loaded. | |
require(["//www.google-analytics.com/analytics.js"]); | |
return module; | |
}); |
Anyone have any issues where this is working locally with hostfile change but not in production?
GA docs say "be sure the tracking code in included just before the closing /HEAD tag. RequireJS is usually just before the closing /BODY tag, not not sure if thats an issue?
Its the weirdest thing that I have this working locally and pushed it live and now GA Admin is not reporting any traffic under Realtime at all.
I have the url in GA admin set to www.jamdeo.com and the domain in the tracking code set to the same.
You should use require(["//www.google-analytics.com/analytics.js"]
instead of require(["http://www.google-analytics.com/analytics.js"]
.
Thanks @saxicek for that change. I've updated the gist.
For anyone wondering, I'm using this in production with RequireJS and the R.js optimizer, and it works great.
I would recommend the Google's option for changing the global name of the analytics object.
Just add another variable gaName
and replace all window.ga
instances with window[gaName]
define(function (require) {
var module,
gaName = "ga"; // Global name of analytics object. Defaults to `ga`.
// Setup temporary Google Analytics objects.
window.GoogleAnalyticsObject = gaName;
window[gaName] = function () { (window[gaName].q = window[gaName].q || []).push(arguments); };
window[gaName].l = 1 * new Date();
// Immediately add a pageview event to the queue.
window[gaName]("create", "{{TrackingID}}", "{{Domain}}");
window[gaName]("send", "pageview");
// Create a function that wraps `window[gaName]`.
// This allows dependant modules to use `window[gaName]` without knowingly
// programming against a global object.
module = function () { window[gaName].apply(this, arguments); };
// Asynchronously load Google Analytics, letting it take over our `window[gaName]`
// object after it loads. This allows us to add events to `window[gaName]` even
// before the library has fully loaded.
require(["//www.google-analytics.com/analytics.js"]);
return module;
});
If I add this to my RJS project, how exactly do I use it?
@paulcanning. You can just just add the module to your require / define method. It will take care of rest of things.
thank you!
it works in curl.js
cujojs/curl#241