js获取referer

js获取referer,适用于Chrome,Firefox,IE等各种浏览器,javascript获取页面来源网址(即referer,当前页面的上一页页面地址).
注意,referer在PHP中是通过$_SERVER[‘HTTP_REFERER’]来获取的,而js中的referer拼写也不一样,不是referer,而是referrer.
js通过document.referrer来获取页面来源网址.
但有一点需要特别指出,在IE浏览器中,如果页面是通过location.href跳转过来的,那么使用document.referrer是无法获取到referrer的.
为此,你需要重新写一个自定义函数,来执行页面跳转才能保证跳转后能够获取到页面来源网址.代码如下:
要执行页面跳转,请使用自定义函数goTo()来代替location.href=“xxxx”;
如果页面中没有进行页面跳转,则无须考虑IE兼容性,可以直接使用getReferer()函数来获取referer.

<script type="text/javascript">
function goTo(url){
        var ua = navigator.userAgent;
        if(ua.indexOf('MSIE')>=0){
                var rl = document.createElement('a');
                rl.href= url;
                document.body.appendChild(rl);
                rl.click();
        }else{
                location.href = url;
        }
}
function getReferer(){
        if(document.referrer){
                return document.referrer;
        }else{
                return false;
        }
}
</script>

请看使用实例:

<script type="text/javascript">
if(!getReferer()){
        goTo('?x=3&r=' + Math.random());
}else{
        alert(getReferer());
}
</script>

另请注意,goTo()函数一定要在和标签之间或标签之后调用,如果在标签之前调用,在IE浏览器中将会出错.

你可能感兴趣的:(前端)