🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2889閲覧

別のページからの遷移後に表示されるURLからアンカータグ(#)を消したい

ayakyon

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

3クリップ

投稿2019/01/17 11:01

前提・実現したいこと

WordPressで各投稿ページを「http://○○.jp/カテゴリ/投稿.html」となるように設定しています。
コメントとトラックバックはタブで切り替えて表示するようにしました。コメント(#commentsBody)トラックバック(#trackbacksBody)にはそれぞれアンカーリンクでアクセスすることができます。
ページ内はスムーズスクロールで移動するようにプログラムしています。スムーズスクロールはhrefが“#”で始まるaタグをクリックすると発動し、実行後は[return false;]でaタグの機能を無効化するようにしました。
コメントとトラックバックをタブ切り替えにしていることから別ページから非表示になっているタブに
アクセスする際にエラーを起こさないよう、別のプログラムも設置しました。

最終的には、コメント/トラックバックにアクセスする際にもブラウザのURL欄にはアンカータグのついていない状態のアドレスを表示しておきたいと考えております。

投稿ページ内からはコメント/トラックバックに問題なくスムーズスクロールで移動し、移動後もURLにアンカータグが付くことはありません。希望通りの動作をしており特に問題は起きていません。

発生している問題・エラーメッセージ

問題は別のページからコメント/トラックバックに移動する時に発生します。
記事一覧ページやサイドバーからコメントへのリンクをクリックすると該当ページには遷移しますが、その後コメント/トラックバックへは移動してくれません。

該当のソースコード

jQuery

1jQuery(document).ready(function($){ 2 //URLアンカーを取得してタブ切り替え後に移動 3 $('a.tabChack').click(function(e){ 4 //URLを変数に代入 5 var urlName = $(this).attr("href"); 6 //aタグの機能を無効化 7 e.preventDefault(); 8 //表示したいURLでページ遷移 9 location.href = urlName.replace(/#.*/, ""); 10 //アンカータグを取得してハッシュを追加(urlHash[1]に収納) 11 var urlHash = urlName.split('#'); 12 urlHash[1] = "#"+urlHash[1]; 13 //タブ切り替え後にスムーズスクロール移動 14 var tab = document.getElementsByName( "tabNav" ) ; 15 if(urlHash[1]=="commentsBody") tab[0].checked = true; 16 else if(urlHash[1]=="trackbacksBody") tab[1].checked = true; 17 var target = $(urlHash[1]).offset().top; 18 $('html,body').animate({scrollTop : target}, 700, 'swing'); 19 }); 20});

試したこと

ページ遷移完了しないうちに次のプログラムを実行してしまっているため、タブ切り替え後のスムーズスクロールができないのではないかと思い、下記のプログラムも試してみたのですが、今度はページ遷移→コメント/トラックバックまでスムーズスクロール→画面再表示により一番上まで戻ってしまいます。

jQuery

1jQuery(document).ready(function($){ 2 var urlHash = location.hash; 3 var tab = document.getElementsByName( "tabNav" ) ; 4 if(urlHash){ 5 if(urlHash=="#commentsBody") tab[0].checked = true; 6 else if(urlHash=="#trackbacksBody") tab[1].checked = true; 7 var target = $(urlHash).offset().top; 8 $('html,body').animate({scrollTop : target}, 700, 'swing'); 9 location.href = location.href.replace(/#.*/, ""); 10 } 11});

何か解決方法はありませんでしょうか?

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決できましたので、ご報告させて頂きます。

2番目に試したプログラムの一番下「location.href = location.href.replace(/#.*/, "");」の部分を「history.replaceState(null, null, location.pathname.split('/').pop());」と書き換えたところ、思い通りの動作となりました。

ページを再読み込みすることなく、ブラウザのアドレスバーを書き換える方法を見つけることが出来ましたので試してみました。

投稿2019/01/17 12:38

ayakyon

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問