javascript 利用hash值实现单页面刷新

本文介绍了如何通过监听hashchange事件,实现在JavaScript中基于URL片段标识符的单页面应用(SPA)的无刷新导航。通过`Router`类实现初始化监听、路由映射和页面内容的动态更新,适用于现代Web开发中前端路由控制。

当地址栏的hash值变化后,触发hashchange事件,从而改变页面数据
init: 初始化,window对象绑定hashchange监听
reloadPage: hashchange触发后的回调事件
map: hash值的配置与回调事件

/**
 * 监听hash值实现单页面刷新
 * init: 初始化,window对象绑定hashchange监听
 * reloadPage: hashchange触发后的回调事件
 * map: hash值的配置与回调事件
 * **
 * time: 2021/10
 * sub: private
 * version: 1.0
 */
(function () {
	const Router = function () {
		this.routers = {}
		this.curUrl = ''
	}

	Router.prototype.init = function () {
		window.addEventListener('hashchange', this.reloadPage.bind(this))
	}

	Router.prototype.reloadPage = function () {
		this.curUrl = location.hash.substring(1) || '/'
		this.routers[this.curUrl]()
	}

	Router.prototype.map = function (key, callback) {
		this.routers[key] = callback
	}

	window.mRouter = Router
})()
<a href="#/">index</a>
<a href="#/game">game</a>
let router = new mRouter()
router.init()
router.map('/', function() {
	// Do something here
	console.log('index')
})
router.map('/game', function() {
	// Do something here
	console.log('game')
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值