Skip to content

Commit d83877c

Browse files
authored
Merge pull request #5754 from segmentio/update-snippet
Update snippet to 5.2.0
2 parents 3b3f296 + 0229ce8 commit d83877c

File tree

4 files changed

+81
-43
lines changed

4 files changed

+81
-43
lines changed

src/_includes/content/snippet-helper.md

Lines changed: 72 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{% codeexampletab Minified %}
33
```html
44
<script>
5-
!function(){function p(){var c=document.querySelector("link[rel='canonical']");return{__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer}}var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var n=Array.prototype.slice.call(arguments);["track","screen","alias","group","page","identify"].indexOf(e)>-1&&n.push(p());n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(t,i);analytics._loadOptions=n};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.0.1";
5+
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var i=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");i.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}i.unshift(e);analytics.push(i);return analytics}};for(var i=0;i<analytics.methods.length;i++){var key=analytics.methods[i];analytics[key]=analytics.factory(key)}analytics.load=function(key,i){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=i};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.2.0";
66
analytics.load("YOUR_WRITE_KEY");
77
analytics.page();
88
}}();
@@ -12,83 +12,118 @@ analytics.page();
1212
{% endcodeexampletab %}
1313

1414
{% codeexampletab Non-minified %}
15-
```js
15+
```html
1616
<script type="text/javascript">
17-
(function(){
17+
(function() {
1818
// Create a queue, but don't obliterate an existing one!
1919
var analytics = window.analytics = window.analytics || [];
20+
2021
// If the real analytics.js is already on the page return.
2122
if (analytics.initialize) return;
23+
2224
// If the snippet was invoked already show an error.
2325
if (analytics.invoked) {
2426
if (window.console && console.error) {
25-
console.error('Segment snippet included twice.');
27+
console.error("Segment snippet included twice.");
2628
}
2729
return;
2830
}
31+
2932
// Invoked flag, to make sure the snippet
3033
// is never invoked twice.
3134
analytics.invoked = true;
35+
3236
// A list of the methods in Analytics.js to stub.
3337
analytics.methods = [
34-
'trackSubmit',
35-
'trackClick',
36-
'trackLink',
37-
'trackForm',
38-
'pageview',
39-
'identify',
40-
'reset',
41-
'group',
42-
'track',
43-
'ready',
44-
'alias',
45-
'debug',
46-
'page',
47-
'once',
48-
'off',
49-
'on',
50-
'addSourceMiddleware',
51-
'addIntegrationMiddleware',
52-
'setAnonymousId',
53-
'addDestinationMiddleware'
38+
"trackSubmit",
39+
"trackClick",
40+
"trackLink",
41+
"trackForm",
42+
"pageview",
43+
"identify",
44+
"reset",
45+
"group",
46+
"track",
47+
"ready",
48+
"alias",
49+
"debug",
50+
"page",
51+
"screen",
52+
"once",
53+
"off",
54+
"on",
55+
"addSourceMiddleware",
56+
"addIntegrationMiddleware",
57+
"setAnonymousId",
58+
"addDestinationMiddleware",
59+
"register"
5460
];
61+
5562
// Define a factory to create stubs. These are placeholders
5663
// for methods in Analytics.js so that you never have to wait
5764
// for it to load to actually record data. The `method` is
5865
// stored as the first argument, so we can replay the data.
59-
analytics.factory = function(method){
60-
return function(){
66+
analytics.factory = function(e) {
67+
return function() {
68+
if (window.analytics.initialized) {
69+
// Sometimes users assigned analytics to a variable before analytics is done loading, resulting in a stale reference.
70+
// If so, proxy any calls to the 'real' analytics instance.
71+
return window.analytics[e].apply(window.analytics, arguments);
72+
}
6173
var args = Array.prototype.slice.call(arguments);
62-
args.unshift(method);
74+
75+
// Add buffered page context object so page information is always up-to-date
76+
if (["track", "screen", "alias", "group", "page", "identify"].indexOf(e) > -1) {
77+
var c = document.querySelector("link[rel='canonical']");
78+
args.push({
79+
__t: "bpc",
80+
c: c && c.getAttribute("href") || undefined,
81+
p: location.pathname,
82+
u: location.href,
83+
s: location.search,
84+
t: document.title,
85+
r: document.referrer
86+
});
87+
}
88+
89+
args.unshift(e);
6390
analytics.push(args);
6491
return analytics;
6592
};
6693
};
94+
95+
6796
// For each of our methods, generate a queueing stub.
6897
for (var i = 0; i < analytics.methods.length; i++) {
6998
var key = analytics.methods[i];
7099
analytics[key] = analytics.factory(key);
71100
}
101+
72102
// Define a method to load Analytics.js from our CDN,
73103
// and that will be sure to only ever load it once.
74-
analytics.load = function(key, options){
104+
analytics.load = function(key, options) {
75105
// Create an async script element based on your key.
76-
var script = document.createElement('script');
77-
script.type = 'text/javascript';
78-
script.async = true;
79-
script.src = 'https://cdn.segment.com/analytics.js/v1/'
80-
+ key + '/analytics.min.js';
106+
var t = document.createElement("script");
107+
t.type = "text/javascript";
108+
t.async = true;
109+
t.src = "https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";
110+
81111
// Insert our script next to the first script element.
82-
var first = document.getElementsByTagName('script')[0];
83-
first.parentNode.insertBefore(script, first);
112+
var first = document.getElementsByTagName("script")[0];
113+
first.parentNode.insertBefore(t, first);
84114
analytics._loadOptions = options;
85115
};
86-
analytics._writeKey = 'YOUR_WRITE_KEY'
116+
analytics._writeKey = "YOUR_WRITE_KEY";
117+
118+
119+
87120
// Add a version to keep track of what's in the wild.
88-
analytics.SNIPPET_VERSION = '4.15.2';
121+
analytics.SNIPPET_VERSION = "5.2.0";
122+
89123
// Load Analytics.js with your key, which will automatically
90124
// load the tools you've enabled for your account. Boosh!
91125
analytics.load("YOUR_WRITE_KEY");
126+
92127
// Make the first page call to load the integrations. If
93128
// you'd like to manually name or tag the page, edit or
94129
// move this call however you'd like.

src/_layouts/default.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@
256256
</script>
257257
<script>
258258
window.analytics = null
259-
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://ajs.cd.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
260-
analytics.page(`{{page.title}}`);
259+
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var i=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");i.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}i.unshift(e);analytics.push(i);return analytics}};for(var i=0;i<analytics.methods.length;i++){var key=analytics.methods[i];analytics[key]=analytics.factory(key)}analytics.load=function(key,i){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=i};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.2.0";
260+
analytics.page(`{{page.title}}`);
261261
// analytics.identify();
262262
}}();
263263
</script>

src/connections/destinations/catalog/optimizely-web/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,11 @@ More importantly, to send the true referrer value with the initial `page` call i
233233

234234
```javascript
235235
<script>
236-
!function(){function p(){var c=document.querySelector("link[rel='canonical']");return{__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer}}var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var n=Array.prototype.slice.call(arguments);["track","screen","alias","group","page","identify"].indexOf(e)>-1&&n.push(p());n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(t,i);analytics._loadOptions=n};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.0.1";
236+
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var i=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");i.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}i.unshift(e);analytics.push(i);return analytics}};for(var i=0;i<analytics.methods.length;i++){var key=analytics.methods[i];analytics[key]=analytics.factory(key)}analytics.load=function(key,i){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=i};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.2.0";
237237
analytics.load("YOUR_WRITE_KEY");
238238

239239

240-
analytics.ready(function() {
240+
analytics.ready(function() {
241241
/* MODIFIED SECTION */
242242
// Hey did Optimizely set an effective referrer?
243243
if (window.optimizelyEffectiveReferrer) var referrer = window.optimizelyEffectiveReferrer;

src/connections/destinations/catalog/youbora/index.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,11 @@ The following example shows a working implementation:
204204
```js
205205
<script>
206206
var vplayer = videojs('html5player')
207-
!function(){function p(){var c=document.querySelector("link[rel='canonical']");return{__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer}}var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var n=Array.prototype.slice.call(arguments);["track","screen","alias","group","page","identify"].indexOf(e)>-1&&n.push(p());n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(t,i);analytics._loadOptions=n};analytics._writeKey="YOUR_WRITE_KEY";;analytics.SNIPPET_VERSION="5.0.1";
208-
207+
208+
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window.analytics.initialized)return window.analytics[e].apply(window.analytics,arguments);var i=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");i.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}i.unshift(e);analytics.push(i);return analytics}};for(var i=0;i<analytics.methods.length;i++){var key=analytics.methods[i];analytics[key]=analytics.factory(key)}analytics.load=function(key,i){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=i};analytics._writeKey="9lSrez3BlfLAJ7NOChrqWtILiATiycoc";;analytics.SNIPPET_VERSION="5.2.0";
209+
analytics.load("9lSrez3BlfLAJ7NOChrqWtILiATiycoc");
210+
analytics.page();
211+
}}();
209212

210213
analytics.load("YOUR_WRITE_KEY", {
211214
integrations: {

0 commit comments

Comments
 (0)