1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 10:22:23 +00:00

fix: 修复链接中有双层锚点时上下一章按钮死链

This commit is contained in:
xuexb 2016-04-03 00:43:46 +08:00
parent 8ad3c20f5f
commit 797ee7c38a

View File

@ -18,6 +18,30 @@ var ditto = {
run: initialize run: initialize
}; };
/**
* 获取当前hash
*
* @param {string} hash 要解析的hash默认取当前页面的hash nav#类目 => {nav:nav, anchor:类目}
* @description 分导航和页面锚点
* @return {Object} {nav:导航, anchor:页面锚点}
*/
var getHash = function (hash) {
hash = hash || window.location.hash.substr(1);
if (!hash) {
return {
nav: '',
anchor: ''
}
}
hash = hash.split('#');
return {
nav: hash[0],
anchor: decodeURIComponent(hash[1] || '')
}
};
var disqusCode = '<h3>留言</h3><div id="disqus_thread"></div>'; var disqusCode = '<h3>留言</h3><div id="disqus_thread"></div>';
var menu = new Array(); var menu = new Array();
@ -56,16 +80,18 @@ function init_sidebar_section() {
menu.push(this.href.slice(this.href.indexOf('#'))); menu.push(this.href.slice(this.href.indexOf('#')));
}); });
$('#pageup').on('click', function() { $('#pageup').on('click', function() {
var hash = getHash().nav;
for (var i = 0; i < menu.length; i++) { for (var i = 0; i < menu.length; i++) {
if (location.hash === '') break; if (hash === '') break;
if (menu[i] === location.hash) break; if (menu[i] === '#' + hash) break;
} }
location.hash = menu[i - 1] location.hash = menu[i - 1]
}); });
$('#pagedown').on('click', function() { $('#pagedown').on('click', function() {
var hash = getHash().nav;
for (var i = 0; i < menu.length; i++) { for (var i = 0; i < menu.length; i++) {
if (location.hash === '') break; if (hash === '') break;
if (menu[i] === location.hash) break; if (menu[i] === '#' + hash) break;
} }
location.hash = menu[i + 1]; location.hash = menu[i + 1];
}); });
@ -260,7 +286,7 @@ function show_loading() {
return loading; return loading;
} }
function router() { function router() {
var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1'); var path = location.hash.replace(/#([^#]*)(#.*)?/, './$1');
var hashArr = location.hash.split('#'); var hashArr = location.hash.split('#');