次のJavaScriptを使用するHTMLのタブシステムがあります。
(function() {
var $tabsNav = $('.tabs-nav'),
$tabsNavLis = $tabsNav.children('li'),
$tabContent = $('.tab-content');
$tabContent.hide();
$tabsNavLis.first().addClass('active').show();
$tabContent.first().show();
$tabsNavLis.on('click', function(e) {
var $this = $(this);
$tabsNavLis.removeClass('active');
$this.addClass('active');
$tabContent.hide();
$( $this.find('a').attr('href') ).fadeIn();
e.preventDefault();
});
})();
HTMLマークアップは次のとおりです。
<ul class="tabs-nav">
<li class="active">
<a href="#1">TAB 1</a>
</li>
<li>
<a href="#2">TAB 2</a>
</li>
<li>
<a href="#3">TAB 3</a>
</li>
</ul><!-- end .tabs-nav -->
<div class="tabs-container">
<div class="tab-content" id="1">
CONTENT OF TAB 1
</div><!-- end #tab1 -->
<div class="tab-content" id="2">
CONTENT OF TAB 2
</div><!-- end #tab2 -->
<div class="tab-content" id="3">
CONTENT OF TAB 3
</div><!-- end #tab3 -->
ULはタブの名前であり、タブをクリックすると、そのタブのコンテンツに移動します。ご覧のとおり、タブをクリックするとリンクはwww.thepage.com#tab1などになりますが、アドレスバーには何も表示されません。thepage.com#tab2にアクセスしてタブ2を表示できるようにしたいのですが、これは機能しません。
このページに投稿されたjavascriptのwindow.locationやhtml5のpushstateなどのさまざまなメソッドを検索しましたが、それらを機能させる方法がわかりませんでした。SEOの目的では、ハッシュタグではなく、page.com/tab1を使用するのが最適です。私はあなたが次のようにhtml5のpushstateでこれを達成できることを知っています:
window.history.pushState(“object or string”, “Title”, “/new-url”);