analytics-angular icon indicating copy to clipboard operation
analytics-angular copied to clipboard

Segment snippet breaks routing on IE 11

Open alexanderkenney opened this issue 3 years ago • 0 comments

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.

alexanderkenney avatar Oct 27 '21 20:10 alexanderkenney