关于hashchangebroker和statehashable的补充文档


Posted in Javascript onAugust 08, 2011

url hash:url中#号后面那段,通常用来定位到html页面中某一锚点。因为hash变化页面不会刷新,所以在ajax应用中用hash来存储脚本运行状态,例如gmail的做法。

jquery hash change event plugin: Internet Explorer 8, Firefox 3.6+, 和Chrome 5+里,已经提供了window.onhashchange事件,但是在老版本的浏览器中并没有这个事件,这个插件通过定时器判断hash是否产生了变化,以便在老版本的浏览器重提供hashchange事件。

hashchangebroker:之前写了这个jquery extend,提供了四个方法:

$.hashchangebroker.subscrib(fragName, handler)

订阅fragName对应的hash段落变化,并转发给指定的handler。

url hash由若干个frag组成,一个frag格式为:[fragName]:[state]。fragName为自定义hash状态名称。state为base64编码的json字符串。

handler只有一个参数state:json格式字符串,描述自定义状态。

$.hashchangebroker.publish(hash)

此方法应绑定到window.onhashchange事件。接收hash并解码找到变更的frag,并转发给订阅该frag的handler。

$.hashchangebroker.changeFrag(fragName,state)

此方法由statehashable类型调用,用于修改hash中对应fragName的frag的state。

$.hashchangebroker.init()

此方法用于在页面刷新后,获取hash并publish。在$(document).ready中调用即可。应放到所有subscrib方法之后。

statehashable:提供这个widget是希望可以比较方便的将控件的状态发布到url hash,并获取控件对应的hash frag的state变化,触发相应的statechange事件。

用法$(dom).statehashable();调用此方法后,给dom对象增加了hashchange事件。当statehashable对象发现控件对应的hash frag变化后,会触发dom对象的hashchange事件。
使用方法:

$(dom).bind("hashchange",function(e,stateObj){ 
//判断stateObj的状态,还原dom到对应的状态 
});

应在更改dom状态的方法中增加statechange的事件触发,statehashable对象会捕捉该事件,并调用hashchangebroker的changeFrag方法,修改hash。statechange触发示例:
$(dom).trigger("statechange",[stateName,stateValue]);
Javascript 相关文章推荐
jquery JSON的解析方式
Jul 25 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
Nov 26 Javascript
总结在前端排序中遇到的问题
Jul 19 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
微信小程序 require机制详解及实例代码
Dec 14 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
ES5新增数组的实现方法
May 12 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
基于jQuery的前端数据通用验证库
Aug 08 #Javascript
JS基础之undefined与null的区别分析
Aug 08 #Javascript
jQuery的12招常用技巧分享
Aug 08 #Javascript
利用javascript的面向对象的特性实现限制试用期
Aug 04 #Javascript
jquery动态加载图片数据练习代码
Aug 04 #Javascript
jquery里的正则表达式说明
Aug 03 #Javascript
基于jQuery的图片剪切插件
Aug 03 #Javascript
You might like
PHP 文件上传功能实现代码
2009/06/24 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python 列表推导式使用详解
2019/08/29 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python实现快递价格查询系统
2020/03/03 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
大四自我鉴定范文
2013/10/06 职场文书
计算机网络专业推荐信
2013/11/24 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
材料员岗位职责
2014/03/13 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
大学生毕业个人总结
2015/02/15 职场文书
财务工作失误检讨书
2015/02/19 职场文书
社团招新宣传语
2015/07/13 职场文书
护士岗位竞聘书
2015/09/15 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android