Pjax适配
因为开启Pjax后网页跳转后不会触发DOMContentLoaded
事件,同时由于右下角的菜单每次跳转都会被更新,所以我们在跳转后必须重新注册事件。
链接跳转
1 | var pjax = new Pjax() |
我们有两种方案,第一种是让代码在每次跳转后都执行一次:
1 | (() => { |
另一种方案是把事件注册到上级元素中,然后鼠标点击时检测被点击元素的id:
1 | document.addEventListener('DOMContentLoaded', () => { |
上面两种方案任意选取一个使用即可解决Pjax的兼容问题。
我用的pjax适配
1 | /*pjax加载函数*/ |
也可以切换页面直接运行
1 | document.addEventListener('pjax:complete', (e) => { |
简单粗暴
如果代码在页面内可以写一个判断简单粗暴如果代码存在则运行(1或者任何数值等于开)
1 | if(1){ |
技巧
1 | <script async data-pace-options='{ "restartOnRequestAfter":false,"eventLag":false}' charset="utf-8" data-pjax="" src="https://cdn.hlcssc.com/cdn/js/nav_menu.js"></script> |
async为异步先加载
data-pace-options=’{ “restartOnRequestAfter”:false,”eventLag”:false}’
为pjax的最佳搭档就是pace了,一个小进度条可以跟踪pjax的加载进度,非常的方便。但是遇见卜算子、百度统计的崩溃大户,我们会经常卡进度,为了避免卡进度,并且这些js运行与网站并没有什么关系,所以我们可以添加pace的属性来排除掉这些加载。
charset=”utf-8” 为编码
data-pjax=”” 为pjax重载
也可以在footer中插入一个 .js-pjax 来添加到pjax的selectors作为重载的dom(顺便就会重载js)
1 | #footer |
1 | <div class="js-pjax"> |
Invitation
退役老兵
QQ:1400000222
created:06/18/1993
62262419930628360000
如果上天不给你机会,那你就自己创造机会,杀出重围 .
再厉害的英雄也需要夫人的陪伴,所以我很爱我的夫人.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 怕冷爱上雪!
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论