jQueryを使用してナビゲーションタブを作成しており、ページの読み込み時にどのナビゲーションタブに移動するかについての参照として使用するURLハッシュ値を検出しています。たとえば、誰かがexample.com/profile.php#mediaにアクセスすると、[メディア]タブが自動的に切り替わります。
私のjQueryコードは、Safari、Firefox、Chrome、およびOperaで機能しますが、Internet Explorerのどのバージョンでも機能しません(IE 6〜10でテスト済み)。私のコードにIEと互換性がないものはありますか?
JavaScript:
$(document).ready(function() {
tab = $('.tab');
function switch_active_tab() {
tab.removeClass('active_tab');
$(this).addClass('active_tab');
}
function hash_detect() {
hash = document.location.hash.replace('#','');
active_tab_id = $('.active_tab').attr('id').replace('-manager', '');
// check if hash value is valid
if( hash == 'pages' || hash == 'media' || hash == 'templates' || hash == 'scripts' ) {
// if hash is not the same as the active tab
if( hash !== active_tab_id ) {
tab.removeClass('active_tab');
$(document.location.hash+'-manager').addClass('active_tab');
}
}
else {
document.location = '#pages';
}
}
function hash_respond() {
hash = document.location.hash.replace('#','');
active_tab_id = $('.active_tab').attr('id').replace('-manager', '');
if( hash !== active_tab_id ) {
document.location = '#' + active_tab_id.replace('-manager', '');
}
}
$(document).ready(hash_detect);
$(window).bind('hashchange', hash_detect);
tab.click(switch_active_tab);
tab.click(hash_respond);
});
対応するHTML:
<div id="tab_wrapper">
<div class="tab active_tab" id="pages-manager">Pages</div>
<div class="tab" id="media-manager">Media</div>
<div class="tab" id="templates-manager">Templates</div>
<div class="tab" id="scripts-manager">Scripts</div>
</div>