location.href跳转时不同浏览器对Referer的设置

Your post title shows that you want to change the current page programmatically using JavaScript but still having the HTTP referrer provided (from what I understood, using a <a> tag is just for a test case).

You need to be aware of cross-browser issues:

    The HTTP referrer header (HTTP-Referer) is set when changing window.location.href under the following browsers:
        MSIE 9 (but probably any version above 9)
        Firefox (at least 3.0, 3.5, 4.0, 5.0, but most probably all versions)
        Chrome (at least 9, but most probably all versions)
        Safari (at least 5, but most probably all versions)
        Opera (at least 11, but most probably all versions)
    MSIE (at least 6, 7, \8): the referrer is not set when changing window.location.href
    Firefox (at least 3.0, 3.5, 4.0): the click function does not exist (this is why some pseudo-solutions are based on myLink.click())
    Firefox 5 : the click function exists under Firefox 5 but does not change the window location, so all the methods relying on the existence of the myLink.click() method will not work. Calling myLink.onclick() or myLink.onClick() raise an error ("onclick is not a function"), so solutions based on these calls will not work.

var navigatorName = "Microsoft Internet Explorer";
      if (navigator.appName == navigatorName){                //IE浏览器在location.href时不会设置referer
    	    var referLink = document.createElement('a');
    	    referLink.href = url;
    	    document.body.appendChild(referLink);
    	    referLink.click();
    	} else {
    	    location.href = url;
    	}

你可能感兴趣的:(location)