スライドをナビゲートし、各トランジションでロケーションハッシュを修正(置換)するために、コアにjQueryCycleを持つjQuerymaximageを使用しています。
あなたがあまりにも速くナビゲートしようとする場合を除いて、それは機能します。その時点で、ページが無限にリロードしようとするため、ブラウザ(FirefoxおよびChromeでテスト済み)がクラッシュします。
$(function(){
var h,
hash = window.location.hash,
hashes = {},
index = 0;
// Iterate slides into hashes object
$('#slides').children('div').each(function(i) {
h = $(this).attr('id');
// Change IDs to hash format
h = h.replace(/\ /g, '-');
hashes[h] = i;
slideInteger = i
});
if (hash) {
index = hashes[hash.substring(1)] || index;
};
$('#slides').maximage({
cycleOptions: {
startingSlide: index,
cssTransitions: true,
after: onAfter,
fx: 'fade',
speed: 360,
timeout: 0
},
onFirstImageLoaded: function(){
$('#cycle-loader').hide();
// Remove tooltip on hover
$('.mc-image').hover(function(){
$(this).removeAttr('title');
});
}
});
function onAfter(el, next_el, opts) {
var nextHash = $(next_el).find('.slideLink').text().toLowerCase().replace(/\ /g, '-');
window.location.replace(('' + window.location).split('#')[0] + '#' + nextHash);
};
$(window).on("hashchange", function() {
$('#slides').cycle(hashes[window.location.hash.substring(1)] || 0);
});
});
onAfter関数を...に置き換えてみました
function onAfter(el, next_el, opts) {
var nextHash = $(next_el).find('.slideLink').text().toLowerCase().replace(/\ /g, '-');
if( window.location.hash != ('#' + nextHash) ){
window.location.replace(('' + window.location).split('#')[0] + '#' + nextHash);
}
};
...しかし、それは何の違いももたらさなかったようです。
これは、jsfiddleでも再現できるものではないようです。したがって、物理的なデモンストレーションが不足していることをお詫びします。