analytics-angular
analytics-angular copied to clipboard
Segment snippet breaks routing on IE 11
We have implemented the Segment Snippet by importing the Segment Snippet via angular.json.
(!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"];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://cdn.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";
analytics.load("YOUR_WRITE_KEY");
// analytics.page() // Uncomment if your application is NOT an SPA
}}();)
This works great on evergreen browsers, but breaks the whole routing process on IE 11. It means that any routes specified within an angular app will not load correctly. I've just spent a few days narrowing it down to this script.
I believe it is because you are calling
Array.prototype.slice.call
The above is not supported by IE 11. Unfortunately a lot of corporate customers are still using this browser, which I appreciate is crazy. However, it would be great to get this fixed as you may well have customers that are not sending their analytics data to segment when the browser is IE 11.