$window.location.origin gives wrong value when using IE

$window.location.origin returns the wrong value on IE.

The origin property returns the protocol, hostname and port number of a URL.

Example

url: http://localhost:8080/products/search

Chrome: $window.location.origin returns http://localhost:8080

IE: $window.location.origin returns http://localhost:8080/products/search

How can I have the right value on IE?


Solution 1:

You may also need the port number. If so, you can use this polyfill

if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" 
    + window.location.hostname 
    + (window.location.port ? ':' + window.location.port : '');
}

This polyfill is already part of Modernizr.

Solution 2:

The problem (as usual) is IE that does not have window.location.origin

Instead try to use something like:

var root = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');

Or you can add on top of your javascript this code so you don't have to bother about it

if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}