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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

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

Q&A

解決済

2回答

6180閲覧

ブラウザのローカルストレージにデータが保存されない

One_of_Arthur

総合スコア82

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

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

0グッド

0クリップ

投稿2021/09/06 00:11

編集2021/09/06 00:21

前提・実現したいこと

JavaScriptで、webストレージのローカルストレージにデータを保存し、取得したい。
なにか足りないのでしょうか?
教えて下さい。

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

エラーメッセージはありません。
ブラウザの設定で確認してみましたが、Cookieは保存されているのですが、ストレージは空白です。
イメージ説明

該当のソースコード

以下の関数を呼んでいます。

javascript

1 function localSave(tweetID, lsValue){ 2 var lsKey = 'tweetback.' + twitterID + '.' + tweetID; 3 alert('ここまでは来ている Save/lsKey:' + lsKey); 4 try{ 5 alert('lsKey:' + lsKey + '\nlsValue' + lsValue); 6 localStorage.setItem(lsKey, lsValue); // locaStorageに保存 7 } 8 catch(e){ 9 alert('エラーが発生しました。:' + String(e)); 10 } 11 } 12 13 function localdelete(tweetID){ 14 var lsKey = 'tweetback.' + twitterID + '.' + tweetID; 15 try{ 16 localStorage.removeItem(lsKey); // locaStorageから削除 17 } 18 catch(e){ 19 alert('エラーが発生しました。:' + String(e)); 20 } 21 } 22 23 function localLoad(tweetID){ 24 var lsKey = 'tweetback.' + twitterID + '.' + tweetID; 25 alert('ここまでは来ている Load/lsKey:' + lsKey); 26 try{ 27 var lsValue = localStorage.getItem(lsKey); //locaStorageから取得 28 if(lsValue = 'null'){ 29 lsValue = ''; 30 } 31 return lsValue; // 戻り値 32 } 33 catch(e){ 34 alert('エラーが発生しました。:' + String(e)); 35 } 36 }

「localSave」を呼んでいる前後です。
「localdelete」は念の為、コメントアウトしています。

javascript

1//省略 2 if(shioriFlagObj[tweetID] == ''){ 3 document.getElementById('example5').innerHTML = 'shioriFlagObj[tweetID]:nullだった'; 4 shioriFlagObj[tweetID] = datetimeStamp() + '\n'; 5 shioriBlock.innerHTML = 'しおりを外す' + tweetID; 6 var shioriMemoDisabled = false; 7 8 // alert('shioriFlagObj[tweetID]:' + shioriFlagObj[tweetID]); 9 localSave(tweetID, shioriFlagObj[tweetID]); 10 }else{ 11 document.getElementById('example5').innerHTML = 'shioriFlagObj[tweetID]:' + shioriFlagObj[tweetID]; 12 shioriFlagObj[tweetID] = ''; 13 shioriBlock.innerHTML = 'しおりをここに入れる' + tweetID; 14 var shioriMemoDisabled = true; 15 16 // localdelete(tweetID); 17 } 18//省略

「localLoad」を呼んでいる部分です。

javascript

1//省略 2 document.getElementById('example4').innerHTML = 'localLoad(tweetID):' + localLoad(tweetID); // ◀◀◀◀◀◀◀ デバッグ 3 // alert('localLoad(tweetID):' + localLoad(tweetID)); 4 shioriMemo.innerHTML = localLoad(tweetID); 5//省略

alertも意図通りに表示されています。
イメージ説明

試したこと

セキュリティソフトが妨害している可能性を考えて、機能停止してみましたが変わりません。
Firefox以外に、Safari、Google Chromeでも試しましたが、読み出してくれません。

補足情報(FW/ツールのバージョンなど)

サーバー:ロリポップ
ブラウザ:Firefox 91.0.2 (64 ビット)
クライアント:macOS Mojave 10.14.6

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

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

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

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

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

m.ts10806

2021/09/06 00:14

各メソッドはどのように呼び出されているのでしょう。 他者がコピペで再現確認できるよう配慮願います
退会済みユーザー

退会済みユーザー

2021/09/06 00:21 編集

実際に問題の JavaScript を動かして、ディベロッパーツールを使ってデバッグして、 var lsValue = localStorage.getItem(lsKey); に取得できているか調べてみましたか?
One_of_Arthur

2021/09/06 00:23

関数を呼んでいる部分を追記しました。
One_of_Arthur

2021/09/06 00:33

デベロッパーツールのデバッグがよくわからないので、念の為lsValueをクリアして、alertを追加してみました。 var lsValue = ''; lsValue = localStorage.getItem(lsKey); //locaStorageから取得 alert('ここまでは来ている Load/lsValue:' + lsValue); すると、alertに内容が表示されました。 保存と読み出し自体は意図通りで、他の部分にバグがあるのかもしれません。
退会済みユーザー

退会済みユーザー

2021/09/06 02:42

「ツールを使ってデバッグできない」=「JavaScript の開発ができない」とほぼ同じぐらいに支障が出ると思いますので、これを機会に使えるようになることをお勧めします。
One_of_Arthur

2021/09/06 02:45

(^_^;)ゞ有難うございます。
guest

回答2

0

localStorageの確認にFirefoxの「設定」を使っているようですが、これですとリアルタイムの把握ができないことと、内容までは見えませんので、開発ツールを使うべきです。Windowsでしたら、F12で下記の画面がでますので、「ストレージ」タブを選択して、左側のローカルストレージを選択すると、localStorageの内容を確認することができます。以下は、Twitterで試した画面例です。

開発ツール

投稿2021/09/06 00:51

ockeghem

総合スコア11705

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

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

One_of_Arthur

2021/09/06 00:55

なるほど! 有難うございます。
guest

0

自己解決

原因が分かりました。
「localLoad」関数の中の

javascript

1 if(lsValue = 'null'){

にバグが有りました。

javascript

1 if(lsValue == 'null'){

が正しいです。
これで意図通りに内容を読み出し表示することができました。

アドバイス有難うございました。

投稿2021/09/06 00:44

One_of_Arthur

総合スコア82

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

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

One_of_Arthur

2021/09/06 00:46

しかし、Firefoxでストレージの状態が確認できないのはなぜだか分かりません。 それについては、放置しても開発が続けられますので、後回しにします。
m.ts10806

2021/09/06 02:48

>放置しても開発が続けられますので、後回しにします。 問題が起きたときに毎回質問するハメになるので「続けられる」とは言えないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問