pjax是更改所有的ajax,coffce-pjax
coffce-pjax
coffce-pjax可以将页面所有的跳转替换为AJAX请求,把网站改造成单页面应用。
note: 由于浏览器限制,pjax需要在服务器环境下使用,即不要使用file://xxx.html运行。
###有何用处:
可以在页面切换间平滑过渡,增加Loading动画。
可以在各个页面间传递数据,不依赖URL。
可以选择性的保留状态,如音乐网站,切换页面时不会停止播放歌曲。
所有的标签都可以用来跳转,不仅仅是a标签。
避免了公共JS的反复执行,如无需在各个页面打开时都判断是否登录过等等。
减少了请求体积,节省流量,加快页面响应速度。
平滑降级到低版本浏览器上,对SEO也不会有影响。
###兼容性:
Chrome, Firefox, Safari, Android Browser, IE8+等。
在IE8和IE9上使用URL Hash,即地址栏的#号。
在更低版本的浏览器和搜索引擎蜘蛛上,保持默认跳转,不受影响。
如何使用
####安装:
npm install coffce-pjax
引入
// 使用全局变量
var pjax = window.CoffcePJAX
// 使用commonJS或AMD
var pjax = require("coffce-pjax");
####简单配置:
pjax.init({
// 替换新页面内容的容器
container: "body",
// 是否在低版本浏览器上使用Hash
hash: true
});
####完整配置:
pjax.init({
// 选择器,支持querySelector选择器
selector: "a",
// 要替换内容的容器,可为选择器字符串或DOM对象
container: "body",
// 是否在前进后退时开启本地缓存功能
cache : true,
// 是否对低版本浏览器启用hash方案,不启用此项的低版本浏览器则会按照普通模式跳转
hash: false,
// 是否允许跳转到当前相同URL,相当于刷新
same: true,
// 调试模式,console.log调试信息
debug: false,
// 各个执行阶段的过滤函数,返回false则停止pjax执行
filter: {
// 选择器过滤,如果querySelector无法满足需求,可以在此函数里二次过滤
selector: function(a) {},
// 接收到ajax请求返回的内容时触发
content: function(title, html) {}
},
// 各个阶段的自定义函数,将代替默认函数
custom: {
// 自定义更换页面函数,可以在此实现动画效果等
append: function(html, container) {}
},
// 要监听的事件,相当于pjax.on(...),事件列表看下面
events: {}
});
接口
/**
* 初始化
* @param {Object} options 配置,详情见上面↑
*/
pjax.init(config);
// 注销插件,一般来说你不需要使用这个方法
pjax.destroy();
/**
* 使用pjax跳转到指定页面
* @param {String} url
* @param {Object} data 要传到新页面的参数,可以为null或undefined
* @param {Function} callback 请求成功时的回调,可以为null或undefined
*/
pjax.turn(url, data, callback);
/**
* 监听事件,事件类型见下面↓
* @param {String} type 事件类型
* @param {Function} listener 回调
* @param {String} url 只监听某个url,可以是相对和绝对路径
*/
pjax.on(type, listener);
pjax.on(type, url, listener);
/**
* 解除监听
* @param {String} type 事件类型
* @param {String} url 只监听某个url,可以是相对和绝对路径
*/
pjax.off(type);
pjax.off(type, url);
/**
* 触发事件
* @param {String} type 事件类型
* @param {Object} args 参数
*/
pjax.trigger(type, args);
事件
####监听事件
// 通过接口监听
pjax.on(type, url, function);
pjax.on(type, function);
// 通过配置监听
pjax.init({
// ....
events: {
type: function(){}
}
});
####事件类型
init
在每个页面加载完成后触发,有一个object参数:{ title, html }
end
在每个页面离开前触发
ajaxBegin
在请求开始时触发。有一个object参数: { url, fnb, data, xhr }, url表示新页面的url,fnb表示是否由浏览器前进后退触发,data表示传到新页面的数据,xhr是请求的XMLHttpRequest()实例
ajaxSuccess
在请求成功后触发。参数与begin一样。
ajaxError
在请求失败后触发。参数与begin一样。
特性
优先使用标签上的data-coffce-pjax-href,其次使用href
标签上若有data-coffce-pjax属性,将作为data属性传递到新页面
// 将跳转到b.html,并传递字符串data
服务端配合
对于PJAX请求,服务端并不需要返回完整的HTML,只返回变动的Content部分即可。对于普通请求(一般由浏览器地址栏直接打开),则需要返回完整的HTML。
coffce-pjax在发送请求时,会带上请求头COFFCE-PJAX:true,你可以依此来判断当前请求是PJAX请求还是普通请求。
由于没有返回完整的HTML,服务端应该将document.title放在请求头COFFCE-PJAX-TITLE里。
注意:
作者很懒,没有认真测试过,接口也可能随时变动,使用需自己小心。
License
MIT
pjax是更改所有的ajax,coffce-pjax相关推荐
- ajax点击更改div,jquery ajax双击div可直接修改div中的内容
jquery ajax双击div可直接修改div中的内容 发布于 2017-04-03 17:26:16 | 127 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框 ...
- pjax和ajax区别,啥是pjax?
pjax = pushState + ajax ======================= pjax是一个jQuery插件,它使用ajax和pushState通过真正的永久链接,页面标题和后退按钮 ...
- java pjax_GitHub - szyjava/pjax: ajax + history.pushState = pjax
介绍 pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术. 同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问. 并且展现方式支持动画技 ...
- Pjax是什么以及为什么推荐大家用
什么是pjax? 现在很多网站( facebook, twitter) 都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新. 这样的用户体验, 比起整 ...
- 【Jquery】Pjax的了解与应用
什么是pjax? 现在很多网站( facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新. 这样的用户体验, 比起整个页 ...
- 黄聪:pjax使用心得总结
初次结识pjax是在使用tower时钟发现的.当时使用时发现网站可以局部刷新,当然我们知道使用ajax也是可以实现局部刷新的. 然而我们知道,使用ajax进行局部刷新时网站的title是不会变化的,并 ...
- php pjax数据返回,如何将Pjax整合进网站,实现全站无刷新加载?
摘要: pjax 是 HTML5 pushState 以及 Ajax 两项技术的简称,综合这两个技术可以实现在不刷新页面的情况下载入HTML网页,带给你超快速的浏览器体验,而且有固定链接.标题以及后退 ...
- 在 Laravel 应用中使用 pjax 进行页面加速
说明# PHPHub 使用 pjax 来加速网页的加载, 这篇文章是在开发完此功能后做的笔记. 什么是 Pjax# .--./ \## a a( '._)|'-- |_.\___/_ ___pjax_ ...
- jQuery+pjax简单示例汇总
pjax 是一个jQuery插件,它使用 ajax 和 pushState 来实现快速的浏览体验,包括真正的固定链接,页面标题和工作返回按钮. ajax缺点是破坏了浏览器的前进后退,因为ajax的请求 ...
最新文章
- Linux下的任务计划
- 体素法滤波(附实现代码)
- HALC: High throughput algorithm for long read error correction
- Elasticsearch之深入了解Search的运行机制
- MongoDB 安全 checklist 及最优配置模板
- 【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- 数字图像处理——第四章 频率域图像增强
- python列表片段_Python列表片段索引操作,python
- 前端经典面试题之CSS实现三栏布局,左右宽度固定,中间宽度自适应
- 空间数据索引RTree完全解析及Java实现
- SharePoint 2013异常信息的查看
- 《OD学spark》20161022
- mysql 查看锁表_MySQL的四种事务隔离级别
- win10虚拟服务器安装xp,教你在WINDOWS 10安装XP系统虚拟机教程
- 英语从句(英语兔学习笔记)
- 【资源分享(免积分)】增长黑客_创业公司的用户与收入增长秘籍 - 范冰(高清版免费).pdf
- docker-compose开机自启动设置
- 计算机视觉在生物公司的应用,生物视觉仿生在计算机视觉中的应用研究.pdf
- 西蒙斯告诉你何为传奇人生 James Simons
- 信息技术应用现状的趋势