JS获取上一访问页面URL地址——(下)
来源:互联网 发布:开源cms建站系统 编辑:程序博客网 时间:2024/06/16 08:14
文章参考自http://www.zhangxinxu.com/wordpress/?p=5957
问题的由来
上篇有提到过document.referrer
,在实际中我们会遇到tab切换的问题,如果两个tab使用的是同一个页面的不同路由,当我们按返回键的时候,我们期望的是回到上一页,而不是呆在当前页。
location.replace()方法
可以阻止按钮的默认跳转,然后使用location.replace()
替换当前按钮地址。代码如下:
$('#demo').on('click', function (event) { event.preventDefault(); location.replace(this.href);})
history.replaceState()和location.replace()方法双管齐下
$('#demo').on('click', function (event) { event.preventDefault(); history.replaceState(null, document.title, this.href.split('#')[0] + '#'); location.replace('');})
1、首先通过HTML5 history.replaceState()方法把当前URL地址替换成以个井号#结尾的目前链接地址;
2、执行location.replace(”)刷新当前地址(此时#会忽略);
但是这个方法是不适用于ios的谷歌浏览器。
兼容问题
上面双管齐下方法只是解决了移动端项目的这个需求,history.replaceState从IE10才开始支持,如果是PC端项目如果也有类似需求,则上面的代码就不适用,于是,我们有必要整一份所有浏览器都兼容的页面链接跳转历史URL不记录的JS代码片段。
如下fnUrlReplace
方法:
var fnUrlReplace = function (eleLink) { if (!eleLink) { return; } var href = eleLink.href; if (href && /^#|javasc/.test(href) === false) { if (history.replaceState) { history.replaceState(null, document.title, href.split('#')[0] + '#'); location.replace(''); } else { location.replace(href); } }};
其中eleLink
参数表示<a>
链接DOM元素,理论上,fnUrlReplace()
方法兼容到IE6。
要想实现最终的效果,还需要和事件关联。举个简单的例子,假设页面上有个<a>
链接,希望点击的时候不进入历史记录堆栈,则可以这样:
document.getElementsByTagName('a')[0].onclick = function (event) { if (event && event.preventDefault) { event.preventDefault(); } fnUrlReplace(this); return false;};
阅读全文
0 0
- JS获取上一访问页面URL地址——(下)
- JS获取上一访问页面URL地址——(上)
- js获取上一页访问的URL地址
- js获取来源url(上个页面的地址)
- js获取当前页面URL地址
- 利用js在页面上获取url
- js获取URL地址
- js 获取URL地址
- js获取url地址
- js获取url地址
- js获取url地址
- jquery/js获取当前页面url地址程序代码
- JS获取当前网址,JS获取当前域名URL ,JS获取网站完整路径页面地址
- js获取URL地址 (路径)
- JS获取当前URL地址
- Js获取URL地址参数
- JS 获取URL地址参数
- js 获取 url 地址参数
- Mybatis自动代码生成(使用交行BBIP框架)
- mybatis 逆向工程 generator xml
- 使用fs模块让你在开发项目中不用重复的去修改webpack的配置文件
- NAT技术与代理服务器调研
- Android中检查网络连接状态的变化,无网络时跳转到设置界面
- JS获取上一访问页面URL地址——(下)
- [Tomcat] Coyote连接器框架源码分析
- 缩简程序代码
- JVM 调优命令排查死锁问题
- 线段树之lazy数组
- 理解LNMP体系结构
- 【Java】线程wait() notify()通信 实现生产者 消费者问题
- 谈谈Java项目经验
- activemq 消息选择器Selector