您的位置:首页 > Web前端 > JavaScript

采用JS实现url跳转导致url丢失的问题

2009-06-29 21:23 639 查看
什么是referrer?
referrer 就是来源页面地址,比如你从 http://www.a.com/1.htm” 点某个链接到了 http://www.b.com/2.html,则对于后者而言,它的 referer 就是 http://www.a.com/1.htm”。 http302跳转是可以保持referrer的。在 A 页面上提交登录表单到 B,B 返回一个重定向页面到 C,在 C 处理里面检查 Referer 可知道它的来源是 A 而不是 B。
但是如果用 window.location 或 document.location 做这个跳转就不一样了。假如在 A 页面上执行 window.location = B,如果是 IE 浏览器,会发现 B 页面的 Referer 为空。firefox 倒是可以保持 Referer,不过在 IE 占绝大部分市场份额的中国,必须想办法避免这个影响。

解决方法有两种,一种是模拟a链接,另外一种是模拟表单提交
1.模拟a链接

function goTo(url) {
var a = document.createElement('a'),
b = '_blank',
bd = document.body,
target = arguments[1]== b ?b:'_self';

if(!a.click) {
return window.open(url,target);
}
a.setAttribute("target",target);
a.setAttribute('href', url);
a.style.display = 'none';
if(!bd) return ;
bd.appendChild(a);
a.click();
if (target == b) {
setTimeout(function(){
try {
bd.removeChild(a);
}
catch (e) {
}
}, 500);
}
}


<input type="button" onclick="goTo('http://www.test.com/3.html','_blank')" value="测试"/>
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐