views:

883

answers:

1

I've got a site that does a complex search and has a "loading" page. On the loading page we use:

<body onload="window.location.replace('results_page.php');" >

Or:

<body onload="window.location = 'results_page.php';" >

The only difference between the two option above are that location.replace() ignores the page in the browser's history.

On the results_page I need to read the referrer for tracking purposes:

<script> alert(document.referrer); </script>

This works fine on all browsers except IE, which returns and empty value for document.referrer.

Anyone know a better way to do a javascript redirect that will give IE a value for the referrer?

p.s. This example has been made much more simple than it would be in production.

+1  A: 

Looks like this is just the cost of doing business with IE users. Can't be fixed without a hack. Working on one now. Thanks for listening.

http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

I used the workaround to make this function. Works like a charm.

<script type="text/javascript" >      
function redirect(url) {
 if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
  var referLink = document.createElement('a');
  referLink.href = url;
  document.body.appendChild(referLink);
  referLink.click();
 } else {
  location.href = url;
 }
}
</script>
mattweg