HTML5实现类似VUE-route功能

通过HTML5的history实现无刷新页面动态加载功能,实现一些单页面应用场景,比如网易音乐等,页面改变时音乐不会停止,原因就是,音乐在外层容器,页面刷新不改变外层,history中加入pushState用于改变地址栏中的地址,给人一种页面跳转的感觉。

$(function(){
	// 页面加载,写入history
	var load_page = function(title, url, post_data){
		history.pushState({"name": title, "data": post_data}, name, url);
	}
	
	// 历史记录改变时执行(解决了浏览器前进、后退按钮功能实现)
	$(window).bind('popstate', (e)=>{
		load_page(e.target.document.title, e.target.location.hash, {});
	});

	// 页面加载时执行(解决了手动输入地址页面加载)
	$(window).bind('pageshow', (e)=>{
		load_page(e.target.title, e.target.location.hash, {});
	});
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 JavaScript 的 H5 跳转导航 app 封装方法: 1. 首先,需要判断当前设备的操作系统类型,可以通过以下代码实现: ``` function getOsType() { var ua = navigator.userAgent.toLowerCase(); if (/iphone|ipad|ipod/.test(ua)) { return 'ios'; } else if (/android/.test(ua)) { return 'android'; } } ``` 2. 判断操作系统类型后,根据不同的类型和导航 app,使用不同的协议进行跳转。以下是常见的导航 app 对应的协议: - 百度地图:bdapp://map/direction?origin=latlng:当前位置|name:我的位置&destination=latlng:目的地纬度,目的地经度|name:目的地名称&mode=driving - 高德地图:iosamap://path?sourceApplication=applicationName&sid=BGVIS1&slat=当前位置纬度&sname=当前位置名称&slon=当前位置经度&saddr=当前位置&sinfo=我的位置&dlat=目的地纬度&dname=目的地名称&dlon=目的地经度&daddr=目的地 - 腾讯地图:qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=当前位置纬度,当前位置经度&to=目的地名称&tocoord=目的地纬度,目的地经度&referer=应用名称 3. 综上所述,以下是完整的 H5 跳转导航 app 封装方法: ``` function openNavigationApp(lat, lng, name) { var osType = getOsType(); if (osType === 'ios') { if (navigator.userAgent.indexOf('baidumap') > -1) { window.location.href = 'bdapp://map/direction?origin=latlng:当前位置|name:我的位置&destination=latlng:' + lat + ',' + lng + '|name:' + name + '&mode=driving'; } else if (navigator.userAgent.indexOf('iosamap') > -1) { window.location.href = 'iosamap://path?sourceApplication=applicationName&sid=BGVIS1&slat=当前位置纬度&sname=当前位置名称&slon=当前位置经度&saddr=当前位置&sinfo=我的位置&dlat=' + lat + '&dname=' + name + '&dlon=' + lng + '&daddr=目的地'; } else if (navigator.userAgent.indexOf('qqmap') > -1) { window.location.href = 'qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=当前位置纬度,当前位置经度&to=' + name + '&tocoord=' + lat + ',' + lng + '&referer=应用名称'; } else { alert('请先安装导航 app'); } } else if (osType === 'android') { if (navigator.userAgent.indexOf('baidumap') > -1) { window.location.href = 'bdapp://map/direction?origin=我的位置&destination=name:' + name + '|latlng:' + lat + ',' + lng + '&mode=driving'; } else if (navigator.userAgent.indexOf('amap') > -1) { window.location.href = 'androidamap://route?sourceApplication=applicationName&slat=当前位置纬度&slon=当前位置经度&sname=当前位置名称&dlat=' + lat + '&dlon=' + lng + '&dname=' + name + '&dev=0&t=2'; } else if (navigator.userAgent.indexOf('qqmap') > -1) { window.location.href = 'qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=当前位置纬度,当前位置经度&to=' + name + '&tocoord=' + lat + ',' + lng + '&referer=应用名称'; } else { alert('请先安装导航 app'); } } } ``` 这个方法可以根据当前设备和导航 app 的不同,自动选择使用不同的协议进行跳转,从而实现 H5 跳转导航 app 的功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值