博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器history操作实现一些功能
阅读量:6509 次
发布时间:2019-06-24

本文共 2858 字,大约阅读时间需要 9 分钟。

返回拦截

功能:从广告进入到落地页后,给history增加一个页面,拦截返回动作

主要用到的是h5中的history对象,使用了pushState,和replaceState来操作。

并且加入了一些条件判断,包括 history.state, history.state.page,history.state.entered。

以上这些方法可以实现按需操作history对象。

 

但history操作后,按返回按钮其实是只更新url地址,不刷新页面的,最终的刷新页面,是用 window.onpopstate 监听,

在判断条件符合后,手动去reload一次页面。

以下就是实现该功能的代码:

1 /** 2  * @note    从广告渠道过来后,按返回按钮时的拦截功能 3  * @author  kangxufeng 
4 * @create 17/08/08 5 * @des 1.url中存在a_tuiaId时,激活拦截功能 6 * 2.插入state:{page:'intercept'}的页面 7 * 3.当前页面state:{page:'current'} 8 */ 9 10 ;11 (function() {12 var intercetpUrl = '/';13 14 $(function() {15 if (history.pushState) {16 // 支持pushState17 if (!history.state) {18 // 未插入页面19 if (isToIntercept()) {20 initReturn();21 }22 } else {23 //已插入页面24 window.onpopstate = function(e) {25 if (history.state && history.state.page == 'current') {26 location.reload();27 } else if (history.state && history.state.page == 'intercept') {28 if (!history.state.entered) {29 // 未拦截30 history.state.entered = true;31 updateTimes(function() {32 location.reload();33 });34 } else {35 // 已拦截36 history.go(-1);37 }38 }39 }40 }41 }42 43 })44 45 function initReturn() {46 if (!history.state) {47 var thisLocation = location.href;48 history.replaceState({page:'intercept',entered:false},'',intercetpUrl);49 history.pushState({page:'current'},'',thisLocation);50 }51 window.onpopstate = function () {52 // location.reload();53 if(history.state && history.state.page == 'intercept') {54 if (!history.state.entered) {55 // history.state.entered = true;56 history.replaceState({page:'intercept',entered:true},'',intercetpUrl);57 updateTimes(function() {58 location.reload();59 });60 }61 }62 }63 }64 65 function updateTimes(callback) {66 callback & callback();67 }68 69 function isToIntercept() { 70 if (getparams('a_tuiaId')) {71 // 存在a_tuiaId,表示从广告进来72 return true;73 } else {74 return false;75 }76 }77 78 function getparams(name) {79 var regexS = "[\\?&]" + name + "=([^&#]*)";80 var regex = new RegExp(regexS);81 var results = regex.exec(location.href);82 83 if (results === null) return "";84 else return results[1];85 }86 })(Zepto);

 

返回上上个页面

功能:首页打开商品详情页B,判断售罄跳转到售罄页C,在C页面点返回时略过B直接回到首页。

B.js:

jumpToEmpty: function() {  history.replaceState({page: 'soldout'}, '', '/item/soldOut');  location.reload();}

C.js:

window.onpopstate = function() {  history.go(-1);}

 

转载于:https://www.cnblogs.com/woodk/p/7302651.html

你可能感兴趣的文章
使用应答文件安装域控制器
查看>>
UNIX/Linux 系统管理技术手册阅读(三)
查看>>
btrfs的使用(案例讲解)
查看>>
rpm db 损坏
查看>>
分布式事务-二阶段提交与三阶段提交
查看>>
安装配置samba服务器和客户端
查看>>
filebeat 配置文件详解
查看>>
Swift与OC混编
查看>>
CentOS 5 (64位)下lnmp平台搭建
查看>>
redhat 6.5 配置WAS控制台中文
查看>>
mysql实现vsftp虚拟用户访问
查看>>
记录一次处理https监听不正确的过程
查看>>
Zabbix使用SMTP发送邮件报警及定制邮件报警内容
查看>>
SCOM 2012 SP1服务器上安装和配置Veeam MP for VMware
查看>>
UDP中转服务器
查看>>
多核编程的四层境界
查看>>
Windows Phone 实用开发技巧(11):让StackPanel中的控件靠右对齐
查看>>
小记如何修改xen模块
查看>>
centos访问windowsxp共享资源指南.
查看>>
实时游戏对战引擎Photon
查看>>