Typecho开启全站Pjax

原文地址:Typecho开启全站Pjax

前言

因为上次更新后加入民音乐插件,但是有个问题就是在页面跳转的时候由于页面已经刷新了,所以音乐就不会继续播放了,就想着去引入Pjax来解决这个问题,同时引入pjax后比较直观的改变就是整个网站变成单页应用,在一定程度上会提高用户体验且已经加载过的表态资源不会再重复加载,站点的响应速度会有进一步的改善

什么是Pjax?

pushState + ajax = pjax,利用 HTML5pushState()replaceState()新特性和 ajax 结合实现。pushState()replaceState() 用来操作 State(状态)对象,即可添加和修改历史记录,进而更新 url 和提供前进、后退操作 ajax 实现数据的异步加载进而局部刷新,下面是官方的介绍https://imagebed-1252410096.cos.ap-nanjing.myqcloud.com/203309/f7c6dbb2243f4ee5acea4db715155caa.png

Pjax可以利用github上面的一个开源项目defunkt/jquery-pjax来快速帮我们实现

使用

js文件引入

前提是引入jquery,然后引入jquery-pjax,我这里是通过CDN的方式去引入,大家也可以下载下来后上传到自己的cdn或网站上

<!-- jquery -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<!-- jquery-pjax -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.pjax/2.0.1/jquery.pjax.min.js"></script>

调用方式

我们先来看看调用方式

$(document).pjax(selector, [container], options) 

参数说明

参数名说明
selector给哪些selector绑定pjax事件,一般的为a标签, 如果要去掉一些外连的URL, 这里的selector可以为a[href^="你的URL"]
container内容变换容器的selector,是指哪个容器里的内容发生的变换,如: ‘#app-main’,在页面跳转时只刷新这个部分
options传入一个对象,常用属性如下:
options-container内容变换容器的selector
options-timeout超时就会被迫页面就会完全刷新,单位毫秒
options-fragment这个作为整个pjax框架,必须写上

例如在freewind主题中是这么使用的

$(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"],a[no-pjax]), a[href^="?"]',{container: '#app-main',fragment: '#app-main',timeout: 8000}
)

解释

<?php Helper::options()->siteUrl()?>是typecho的自带函数,调用本站的首页地址,就是说本站地址开头且属性不包含target="_blank"no-pjax 或 以?开头的a标签都会进行pjax刷新,以?开头是有些地方传参时可能直接省略的站点url

#app-main是局部刷新的容器的selector,大家根据自己的主题自行修改

加载动画

pjax为我们提供了两个回调事件

pjax:send:pjax加载之前

pjax:complete:pjax加载成功之后

所以我们可以在pjax加载之前开启动画,加载成功之后结束动画,我这里用的是nprogress这个进度条动画

https://imagebed-1252410096.cos.ap-nanjing.myqcloud.com/203309/ca53f1aa92e94b4197a8c8135ff1dec3.png

所以我们的代码就成了如下

$(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"],a[no-pjax]), a[href^="?"]',{container: '#app-main',fragment: '#app-main',timeout: 8000}
).on('pjax:send', function () {NProgress.start();//加载动画效果开始}).on('pjax:complete', function () {NProgress.done();//加载动画效果结束
});

js插件不生效

pjax采用的是异步请求资源,也就是每次请求数据不是重新获取整个页面的数据而是只会获取#pjax-container容器里面的数据。所以如果js脚本在容器外的话就不会被加载执行了,所以我们可以定义一个reload函数在pjax结束时进行回调,以freewind主题为例,最终代码如下:

function reload() {// 初始化freewind题window.freewind = new Freewind($("#is-page").data('page').trim() === 'page')if (window.freewind.page) {//如果是文章详情面window.freewind.registerPage()}//自定义挂载点,部分插件可能需要初始化,可以写在这里<?php Typecho_Plugin::factory('freewind')->pjaxload(); ?>window.freewind.topInit()window.freewind.registerHandler()
}
//第一次进行页面进行初始化
reload();
$(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"],a[no-pjax]), a[href^="?"]',{container: '#app-main',fragment: '#app-main',timeout: 8000}
).on('pjax:send', function () {NProgress.start();//加载动画效果开始}).on('pjax:complete', function () {reload();//pjax加载结束完重新初始化NProgress.done();//加载动画效果结束
});

结束

至此,typecho开启pjax结束,大家还不快去试试,有什么不懂的地方可以在下方评论,我看到后会帮大家解答

参考

  • typecho博客实现pjax - 友人C

  • 给 Typecho博客 配置PJAX无刷新访问的 教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619495.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

rk3588编译Ubuntu固件,Linux SDK开发

基础认知 Linux SDK 是由 Firefly 官方提供的 Linux 软件开发工具包&#xff0c;旨在方便用户基于其进行模块开发与系统定制。 SDK 目录树 各个芯片平台的 Linux SDK 目录树可能略有差异&#xff0c;但一般如下&#xff1a; ├── app # 存放上层应用 app,主要是 qcamera/qf…

RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/127783966 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

Uniapp集成熊猫播放器

先源码分析 后续增加集成的例子 相关链接 官方文档:https://www.yuque.com/lahuayouyiliushuiwuqing/csqxe2插件地址:https://ext.dcloud.net.cn/plugin?id=6715 源码分析删掉不需要的组件 不知道路径问题

wordpress html音乐,【WordPress插件】QPlayer音乐播放器插件html5音乐插件

音乐播放器&#xff0c;这个大家不陌生了&#xff0c;wordpress也是可以直接插入的&#xff0c;但是不够美观&#xff0c;而且只支持本地的&#xff0c;今天给大家推荐一款自动解析各大音乐网站的播放器&#xff0c;界面美观&#xff0c;支持歌词显示。 使用方法&#xff1a; D…

QPlayer2-资源网各大程序背景音乐插件

介绍&#xff1a; QPlayer2一款简洁小巧的HTML5底部悬浮音乐播放器&#xff0c;支持网易云音乐解析&#xff0c;由GitHub用户Jrohy开发&#xff0c;最新版本为v1.3.4.2&#xff0c;更新于三年前&#xff0c;已不再更新。 如今&#xff0c;MoeShin将代码优化后制成QPlayer2&…

三款QPlayer2-背景音乐插件

简介&#xff1a; 一款简洁小巧的 HTML5 底部悬浮音乐播放器&#xff0c;支持云音乐&#xff0c;现已支持WordPress、Typecho、Z-Blog。 网盘下载地址&#xff1a; http://kekewangLuo.net/iTqbm3fJQ6y0 图片&#xff1a;

week6刷题

题解: 使用二分查找 class Solution { public:int minArray(vector<int>& numbers) {int low 0;int high numbers.size() - 1;while (low < high) {int pivot low (high - low) / 2;if (numbers[pivot] < numbers[high]) {high pivot;}else if (numbers…

[组图]一切从零开始 Symbian智能机之软件入门(转)

购买NOKIA智能手机的朋友们会发现&#xff0c;NOKIA采用的是一种叫做Symbian的操作系统。Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司&#xff0c;专门研发手机操作系统。而Symbian操作系统的前身是EPOC&#xff0c;而EPOC是Electro…

S60十大优秀软件

众所周知&#xff0c;智能手机是手机发展的一大趋势。由业界老大诺基亚领衔的symbian智能手机在市场上独占鳌头。占据绝对多数的市场份额。symbian智能操作系统中由以S60平台应用最广&#xff0c;最受消费者青睐。很多消费者选购了基于S60平台的symbian智能后&#xff0c;面对数…

2021高考放榜,还能无脑选计算机专业吗?

前言 古语有云&#xff1a;“久旱逢甘霖&#xff0c;他乡遇故知&#xff0c;洞房花烛夜&#xff0c;金榜题名时。”此为人生四大乐事也。 前段时间高考刚落下帷幕&#xff0c;虽说人生中最重要的考试已经过去 &#xff0c;但如何填报志愿也不能掉以轻心&#xff0c;这不仅关乎…

DebugInfo 模型功能系统介绍 文本上色 文本与表格对齐 分隔线 秒表计算器 语义日期

背景 今天系统性的为大家介绍一下 DebugInfo 模块。这个模块提供了一些丰富的基本功能的封装&#xff0c;希望能给有需要的人带来些许帮助。 文本上色 DebugInfo 模块引入了 colorama提供文本颜色支持。 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugI…

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-XGBoost金枪鱼算…

视频播放花屏问题

h264裸流播放视频&#xff0c;出现如下画面有可能是屏的线序问题

音视频问题汇总--视频花屏

最近工作上碰到两个问题&#xff0c;都是播放时候出现花屏现象&#xff0c;因此汇总一下&#xff0c;方便后续防止踩坑。 问题一 第一个是设备播放特定文件时出现花屏现象。 碰见类似问题&#xff0c;一般会进行问题怀疑点预设&#xff0c;初步猜想可能发生的原因&#xff1a;…

Compose - 交互组合项

按钮 Button OutLinedButton带外边框、TextButton只是文字、IconButton只是图标形状。 Button(onClick { }, //点击回调modifier Modifier,enabled true, //启用或禁用interactionSource MutableInteractionSource(),elevation ButtonDefaults.elevatedButtonElevation( /…

各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》&#xff0c;我们介绍了RTSP流的检测和分析工具EasyRTSPClient&#xff0c;可以说已经是深入了我的平时运维工作中了&#xff0c;当我们发现有任何RTSP源或者摄像…

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1&#xff1a;打开“Windows Meida Player”播放器&#xff0c;找到“工具”->“选项”->“性能”->“视频加速”&#xff0c;把“完全”滑块放到中间&#xff08;如果仍不行可调整到无&#xff09;&#xff0c;然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行&#xff0c;原来很多传奇版本不能适应&#xff0c;必竟传奇是一款比较老的游戏&#xff0c;很多电脑现在初装都已经是Win10了&#xff0c;win10系统&#xff0c;玩单机时点开始游戏就出现花屏&#xff0c;换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示&#xff0c;Switch的一端和组播服务器相连&#xff0c;并且将GE1/0/0加入Eth-Trunk 0&#xff0c;另一端下挂用户终端&#xff0c;并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务&#xff0c;下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题&#xff1a; 解码为YUV420转为Bitmap后显示在屏幕上时&#xff0c;有三分之二为花屏&#xff1a;如图&#xff1a; 首先用h264Visa分析帧&#xff1a; 已经读出了sps等信息&#xff0c;这些信在解码第一帧时被写入环境变量中&#xff0c;所以下边的帧不需要sps了 而且在…