一:问题出现
发现这一问题是在一次开发当中做了一个跳转在FF下面能正常跳转,最后将项目传到线上之后,测试的却告诉我在IE下面不能跳转,我开始还不相信,后来一测试,果真如此,经过最终的排除BUG,最后锁定了是HTTP_REFERER这个常量的问题。
二:有的时候,在ie下面出现Notice: Undefined index: HTTP_REFERER,但是在FF下面却能正常输出
三:$_SERVER ['HTTP_REFERER'] 变量。这是什么原因呢?现我简化一下代码来讲解解决办法。
见下图一:
html代码为:
<body>
<a href="javascript:$.dianJi();void(0)" name='lj' >点击链接进行跳转</a>
</body>
js代码为:
<script type="text/javascript">
$(function(){
$.dianJi=function(){
location.href="http://localhost/20130426/action.php?action=check";
}
})
</script>
action.php页面代码为:
$action=$_GET['action'];
echo $_SERVER ['HTTP_REFERER'];
四:点击链接,发现,在FF下面能正常输出:
见图二:
但是,在IE下面却报错,见图三:
五:解决办法
造成这种情况的出现,估计是IE的BUG,那该怎么解决呢?我们在跳转的之前想办法,重新做一个跳转的函数。
下面是修改后的js代码:(html代码不做变动)
$(function(){
$.myRedirect=function(url) {
var theLink = '';
if (document.getElementById) {
theLink = document.getElementById('redirect_link');
if (!theLink) {
theLink = document.createElement('a');
theLink.style.display = 'none';
theLink.id = 'redirect_link';
document.body.appendChild(theLink);
}
if (url) theLink.href = url;
}
if ((theLink) && (theLink.click)) theLink.click();
else location.href = url;
}
$.dianJi=function(){
var url="http://localhost/20130426/action.php?action=check";
$.myRedirect(url);
}
})
六:重新在IE下面测试:
运行结果见图四:
七:问题解决
从图四可以发现,完美解决了之前的错误,而且在FF下面也照样正常运行。