質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

1118閲覧

タブごとにフォーム内容を記憶したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/08/02 02:09

現状のシステムではウェブアプリケーションでフォーム入力を記憶するために
JS(jQuery) で sessionStrage に状態を保存して
ページ表示時に呼び出してフォームにセットするということをしているみたいです

ブラウザで別タブを開いてフォーム内容を変更して表示した後
元のタブに戻って再読み込みや戻るを行った際にタブごとにフォーム内容を記憶するようにしたいという要望があるのですが、
どうすれば実現可能でしょうか

同一セッションで新規アクセスと再読み込みや戻るでのアクセスを区別する方法はありますか?
区別できればサーバー側で何かIDを埋め込んで sessionStrage に ID ごとのタグを保存すれば良さそうなのですが

システムは Rails プラットフォームで動作していますが
現状ページ遷移はせずに画面遷移はほぼ view 内の JS の ajax のみで完結している感じです

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

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

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

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

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

guest

回答1

0

ベストアンサー

タブごとに保存する内容を変えたいということでしたらページ読み込み時にUUIDなどで一意のIDを作成して、そのIDをキーにsession storage にデータを保存するというやり方ではいかがでしょうか?
ただしsession storage の場合セッションが切れたタイミングで保存した内容も消えてしまいますが。

【追記】
すいません。UUIDのことは忘れてください。使わなくても大丈夫です。
タブを閉じたときに保存データが消えてもいいという前提ですが、
初回読み込み時、フォームの内容を入力したタイミングでsession storageにデータを保存。
戻るボタンやリロード時にsettion storageにデータがあるかを確認して
あればフォームに内容を反映させればいいと思います。

タブごとに保存したいということなので新しいタブで同じURLを見たときはデータ反映する必要はないですよね?

投稿2018/08/02 03:41

編集2018/08/02 05:14
keisukeh

総合スコア657

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

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

退会済みユーザー

退会済みユーザー

2018/08/02 04:58

クライアント側で生成してもいいんですか いずれにしろどこに埋め込んで参照すればタブごとにユニークになるのかわからないんですよね タブを開いた時と再読み込みや戻るで同じURLにアクセスした時をどうやって区別すればいいのでしょうか
keisukeh

2018/08/02 05:13

回答に追記しましたのでご確認ください。
退会済みユーザー

退会済みユーザー

2018/08/02 05:18

>初回読み込み時 >戻るボタンやリロード時 を具体的にどう書けばいいのでしょうか 1つ目のタブを開いてリロードした場合と2つ目のタブを開いた場合で処理を分ける方法がわからないのです
keisukeh

2018/08/02 05:21 編集

処理を分ける必要はないです。settion storageはタブごとに違いますので タブAのsettion storageとタブBのsettion storageは別物です。
退会済みユーザー

退会済みユーザー

2018/08/02 05:25

そうだったのですね セッションはタブ間で共通している(ログイン状態は維持されたまま)と思ってたので sessionStrage にデータがあるかどうかだけを見ても区別できないと思っていたのですが sessionStrage というのはタブごとに勝手に別になってくれるんですね それならコーディングに入れそうです ありがとうございました
namda

2018/08/02 05:33

ぱっと思いつくのは `history.replaceState()` や `history.repalceState` などでURLのパラメータにuuid追記する方法ですね。 実機検証して無いですが、リアルタイムにurl書き換えして、戻る進む、リロード時も値を保持してくれると思います。 またサーバ側は読まなくてよく、そのurlパラメータを見てローカルストレージにSession+uuidで保存読み出しなどどうでしょう
退会済みユーザー

退会済みユーザー

2018/08/02 08:22

まだコーディング途中なのですが sessionStrage 自体がタブごとに別なのであればIDをつけたりは必要ない気がします もしタブ間で共通だったり、セッションが閉じてもデータを残したい localStrage 使うケースが出て来たらそういう方法で戻るリロードを検出する必要もあるかもしれないですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問