- /**
- * Hawk(鹰)
- *
- * 一个开源web应用程序开发框架,兼容IE 9+,火狐,谷歌等主流浏览器.
- *
- * @package Hawk
- * @license http://www.gnu.org/licenses/gpl.html
- * @since Version 1.0.0
- */
- // ---------------------------------------------------------------------
- /*
- * 简要说明
- *
- * 1.锚链接示例:
- * #/class/method/param1/param2/param3
- * 2.'#/'必须存在,用于减少与文档中真正存在的锚点的冲突;
- * 3.class,method,param分别指明想要调用的类,方法和传入的参数,参数可以有0个或多个;
- * 4.当mehtod为空时,即锚链接为 #/class 的形式时,如果指定的类存在index方法,则系统
- * 将默认调用此方法;
- * 5.系统将只在window.hawk的属性中寻找可用的类及其方法,以避免不必要的冲突.
- * 6.建议将此文件放置在网页的最后,保证用户通过含有锚点的链接访问网站时,网站能按预期显示.
- */
- (function(){
- if(typeof window.hawk !== 'object'){
- window.hawk = {};
- }
- // 注册onhashchange事件,检测地址栏锚地址的变化.
- // 其中callbackFuncHashChange为onhashchange事件的句柄.
- window.addEventListener('hashchange', callbackFuncOnHashChange, false);
- function callbackFuncOnHashChange(){
- var uriHash = location.hash.replace(/^#\\//, '');
- if(uriHash === location.hash) return;// 说明锚链接不是以'#/'开头
- uriHash = uriHash.split('/');
- switch(uriHash.length){
- case 0:
- return;
- case 1:
- if(uriHash == '') return;
- _hashFunc(uriHash[0],'index');
- case 2:
- default:
- _hashFunc(uriHash[0], uriHash[1], uriHash.slice(2));
- }
- //根据hash调用指定的类和方法,并传入指定的参数.
- function _hashFunc(className, methodName, params){
- if(window.hawk[className] && window.hawk[className][methodName]){
- window.hawk[className][methodName].apply(null, params);
- }
- return;
- }
- }
- // onhashchange句柄函数应在系统初始化时先自动执行一次.
- callbackFuncOnHashChange()
- })();
- //该片段来自于http://www.codesnippet.cn/detail/210120148610.html
来源: http://www.codesnippet.cn/detail/210120148610.html