曾整理过一个各种页面跳转方法中referrer丢失的情况,其中提到,在IE中,使用类似 location.href = "a.html"这样的方式跳转页面时,在目标页面中 document.referrer的值会是空。这应该是IE的一个 bug。
大多数情况下,这个问题不会给我们带来麻烦,但有时候我们不得不用JavaScript来跳转,同时又要在下一个页面收集 document.refer,这时就得想想其他办法了。
Form GET方法
首先想到的是使用Form表单,用JS发起一个GET请求。代码类似下面这样:
function goToPage(url) { if (isIE) { // IE浏览器 var frm = document.createElement("form"); frm.action = url; frm.method = "GET"; document.body.appendChild(frm); frm.submit(); } else { // 非IE location.href = url; } }
这个方法可以如同预期地工作,目标页面中 document.referrer能正常指向上一个页面。
A元素模拟点击方法
网上搜索了一下,发现司徒正美的博客上记录了这个问题的另一个处理方法:
//define for all browsers function goto(url) { location.href = url; }//re-define for IE if (isIE) { function goto(url) { var referLink = document.createElement('a'); referLink.href = url; document.body.appendChild(referLink); referLink.click(); } }
原理很简单,先创建了一个 A元素,指定其 href属性为目标链接,然后再使用JS触发它的点击事件。经测试,在目标页面也能正常取到 document.referrer。
这个方法代码更简短一点,应该比上面的使用 form表单的方案更好一些。
本文向大家介绍jquery mobile页面跳转后样式丢失js失效的解决方法,包括了jquery mobile页面跳转后样式丢失js失效的解决方法的使用技巧和注意事项,需要的朋友参考一下 用ajax跳转的时候,从a.html跳转到b.html后,b.html的css以及js都失效了。 方法: 将当前页面b.html需要用到的css以及js放在<page>div内。 原理: 由于jqm的ajax跳转
本文向大家介绍js如何解决数字精度丢失的问题?相关面试题,主要包含被问及js如何解决数字精度丢失的问题?时的应答技巧和注意事项,需要的朋友参考一下 const verifyFunc = (left, right) => { return Math.abs(left - right) < Number.EPSILON * Math.pow(2, 2); }; console.log(verifyFu
本文向大家介绍php页面跳转session cookie丢失导致不能登录等问题的解决方法,包括了php页面跳转session cookie丢失导致不能登录等问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 thinkphp开发的一个项目,登录成功后又跳转到登录页面,在提交信息后输出session都是正常的,没有问题,但是页面跳转后,session出现丢失现象,无法正常完成登陆。 通过查找资料
本文向大家介绍C# SESSION丢失问题的解决办法,包括了C# SESSION丢失问题的解决办法的使用技巧和注意事项,需要的朋友参考一下 我们在用C#开发程序的时候经常会遇到Session很不稳定,老是数据丢失。下面就是Session数据丢失的解决办法希望对您有好处。 1、在WEB.CONFIG文件中修改SESSION状态保存模式,如:<sessionState mode='StateServe
本文向大家介绍Spring Security跳转页面失败问题解决,包括了Spring Security跳转页面失败问题解决的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring Security跳转页面失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天新建SpringBoot项目练手,第一次添加了Spring Se
本文向大家介绍Django数据库连接丢失问题的解决方法,包括了Django数据库连接丢失问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 问题 在Django中使用mysql偶尔会出现数据库连接丢失的情况,错误通常有如下两种 OperationalError: (2006, 'MySQL server has gone away') OperationalError: (2013, 'Los