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

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

詳細はこちら
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

HTML

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

Q&A

2回答

809閲覧

jQueryを残したまま、ページを戻りたい

sunasuna123go

総合スコア21

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2020/12/02 09:56

編集2020/12/02 09:58

現在Webアプリを制作しています。
サイトの大まかな内容は完成しました。

皆さまにご教授いただきたい点は以下になります。

【解決したいこと】
・ページ遷移後、前のページのjQuery(≒javascript)を残したままページを戻りたい

以下で詳細をお伝えします。

【経緯・詳細】
弊Webアプリには「商品一覧」のページがあります。商品一覧ページにある商品をクリックすると、form(GETメソッド)が発動し、商品の詳細ページに遷移し、商品の詳細を表示します。

しかし、サイトで取り扱う商品数が多いため、商品一覧ページはjQueryを用いて最初の10件のみ表示しています。
ページ下部の「もっと見る」ボタンをクリックすると、10件ずつ商品を追加して表示する様になっています。

「もっと見る」をクリックして表示させた商品をクリックして、その商品の詳細ページに遷移した後、
ブラウザで「戻る」と、今まで押していた「もっと見る」のjQueryの効果が初期化(?)されて、また最初の10件のみしか表示されなくなってしまいます。


私が開発段階で確認していたiPhoneのSafariとChromeでは、このjQueryの効果が残ったままページを戻れるのですが、
デスクトップのMicrosoft EdgeやChrome、Android端末のChromeだと上記の問題の動作をします。

これをjQueryの効果を残したまま、ページを遷移(戻る)ことができたら、いちいち下部の商品まで「もっと見る」を押さないで済むので、ユーザーのとって負担が少ないと思いました。

諸先輩方、お手数おかけして申し訳ありませんが、
ご教授いただけると幸いです。
宜しくお願いします。

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

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

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

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

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

guest

回答2

0

history.pushState()を使えば画面遷移しないままURLがブラウザの履歴に残せるので、お望みの仕様に使えると思います。

https://developer.mozilla.org/ja/docs/Web/API/History/pushState

投稿2020/12/02 15:17

編集2020/12/02 15:19
cerfweb

総合スコア1907

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

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

sunasuna123go

2020/12/03 02:49

お返事いただきありがとうございます! 聞いたことないメソッドなので、history.pushState()で調べてみたいと思います!
sunasuna123go

2020/12/06 09:09

前回お返事頂いてから時間が経ってしまい、申し訳ありません。 あれから作業を再開するタイミングがあったのですが、history.pushState()の使い方は、 商品の詳細ページへの遷移にhistory.pushState()を用いて、 元の商品一覧のページのjQueryを残したままページ遷移する という認識であっていますでしょうか。 お忙しいとは思いますが、お返事頂けると幸いです。 よろしくお願い致します。
cerfweb

2020/12/06 12:17

「もっと見る」ボタンのクリックイベントに伴う動作にwindow.history.pushState(〇〇〇); を入れることで、ブラウザに履歴が残ります。(〇〇〇はサイトの仕様に沿った引数を入れてください。「もっと見る」ボタンをクリックした場合にURLに何らかのパラメータを追加するなどの工夫が必要です。) それによって、ページ遷移した後でもブラウザの「戻る」で「もっと見る」ボタンをクリックした後の状態と同じ状態が表示されるという仕組みです。
sunasuna123go

2020/12/06 12:42 編集

お返事いただき、ありがとうございます! すごい大雑把に解釈すると、 各「もっと見る」にフラグの様な機能を持たせて、ブラウザバックするときにそのフラグを参照するみたいなことでしょうか。
cerfweb

2020/12/06 12:56

具体的に説明すると、例えば「もっと見る」ボタンのクラスを.moreBtnとし、1回押したら商品の合計表示数が20までとなるのでその時のURLにパラメータ?cnt=20或いは/20/のようなものを追加するとします。 その上で、 $('.moreBtn').on('click', function(){ // 10件データを追加するスクリプト、〇〇〇の部分に入れるURLパラメータの変数設定など... window.history.pushState(〇〇〇); }); とすれば、商品をいくつまで表示するかということが指定されたURLがブラウザの履歴に残ります。 「もっと見る」ボタンをクリックしても画面遷移はしませんが、ブラウザの履歴には商品表示件数の指定がURLで残る仕組みです。
guest

0

まず、なぜ初期化されてしまうのかという問題ですが
原因はブラウザバックしたときにページが再読込される仕様のためです。
当然jQeryの処理も再度されることになります。
ではどうやって「もっと見る」をクリックした状態を保存するかですが...

  • Cookieに保存
  • サーバーの任意のファイル・データベースに保存

が考えつきますが、あまりスマートでは無いですね

リンク先を別タブで開かせる(target="_blank")
ようにするのが現実的かと思います。

投稿2020/12/02 11:48

2ckD

総合スコア305

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

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

sunasuna123go

2020/12/02 12:11

ご回答いただき、ありがとうございます! 頂いたキーワードを元に追加調査したところ、「iPhoneはブラウザのキャッシュを読み込むため、jQueryが残ったままである」的な記述を見つけました。 ページをPHPで作成しているので、PHPでキャッシュを残す方法を一先ず調べようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問