如下代码在搜狗中能正常运行,在IE中始终都是window.alert("非法登陆 ");
window.location.href="login.htm";求高手指教.var url = document.referrer;   
            if(url=="http://www.a.com/check.php"){   
window.alert("验证成功 ");
            }else {
window.alert("非法登陆 ");
window.location.href="login.htm";
    }

解决方案 »

  1.   

    在js代码里面加
    alert(document.referrer);看下另外,需要你先打开这个地址:http://www.a.com/check.php,然后不开新窗,点击此页面上的链接到达楼主发的页面,才有效果搜狗有效可能是因为多窗口浏览器的原因,不算开新窗
      

  2.   

    document.referrer 在其它浏览器里很正常,但在IE里就是这样的。如果是在一个后台脚本程序里,最好用后台的方法判断。比如你上一个页面就是个PHP,这个页面怎么能是一个纯HTML呢。所以如果是PHP就用PHP的方法做,它可以取得到。如果真要在JS里取,有两种方式:一是转向时在URL后面加上参数,JS取URL后的参数。这个方法适用于记忆上次的位置,然后完成处理后返回上次位置,或者是进行来源统计。但对你这种“验证成功”“非常登陆”的验证来说就不适用了,很容易被人伪造URL参数。二是在之前的PHP页通过特殊的方法让document.referrer带上值,但并不适合所有情况。主要是看你要实现的这个功能,根本不适合用JS处理,还是应该用PHP去取来源。
      

  3.   

    document.referrer 在其它浏览器里很正常,但在IE里就是这样的。
    并不是说所有时候都不好使。只是很多情况下IE都会把那种行为当作直接打开一个新网站来处理。但这其中,很多时候在HEADER里却又包含有效的referrer信息,只是在JS的document.referrer里没有设置。
      

  4.   

    自己调试一下,或者alert 看看 document.referrer 的值不就明白了
      

  5.   

    通过修改Location进行页面导航的方法,会导致在IE下丢失Referrer。 如果是同个域名下通过此方式跳转的,那么我们可以通过访问windoww.opener对象去获取丢失的referrer信息。代码如下:
    <script type="text/javascript">
        var referrer = document.referrer;
        if (!referrer) {
            try {
                if (window.opener) {
                    // IE下如果跨域则抛出权限异常
                    // Safari和Chrome下window.opener.location没有任何属性
                    referrer = window.opener.location.href;
                }
            }
            catch (e) {}
        }
    </script>
    跨域的话则没辙了~
    原文http://www.imkevinyang.com/2010/01/document-referrer%E4%B8%A2%E5%A4%B1%E7%9A%84%E5%87%A0%E4%B8%AA%E5%8E%9F%E5%9B%A0.html