回答編集履歴

1

回答に追記

2018/03/23 06:51

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -59,3 +59,75 @@
59
59
  URL文字列の分析など, **いかにも世界中で同じようなことが必要とされていそうな処理**には概ね便利なAPIやライブラリが用意されていて, 大抵は自作したコードよりも品質が良いものです.(世界中で使われている=十分にテストが為されているので) ですから, 実際のコーディングを始める前にWEBブラウザ側に必要としている仕組みが無いか確認することを心がけましょう.
60
60
 
61
61
  とはいえ, このAPIがあるかないかの嗅覚はある程度経験を積まないと身につきませんし, あると思っていた機能が実は無かったときのことを踏まえて, コードを自作することも立派なトレーニングではあります.
62
+
63
+
64
+
65
+ ---
66
+
67
+
68
+
69
+ > 最初にaaaでアクセスした場合は
70
+
71
+ 今後パラメータがないURL、bbbがついたURLでアクセスしようと
72
+
73
+ aaaに対応した処理をしたいと考えています。
74
+
75
+
76
+
77
+ であれば, `localStorage`にidを記憶させればよいでしょう.
78
+
79
+
80
+
81
+ ```JavaScript
82
+
83
+ "use strict";
84
+
85
+ document.addEventListener("DOMContentLoaded", e => {
86
+
87
+ //URLを分析する
88
+
89
+ const params = (new URL(document.location)).searchParams;
90
+
91
+ //編集対象のリンク
92
+
93
+ const anchor = document.querySelector(".link a");
94
+
95
+ //記憶済みのidを確認する
96
+
97
+ let savedId = localStorage.getItem("id");
98
+
99
+ if(savedId === null && params.has("id")){
100
+
101
+ //記憶済みのidが存在せず, パラメータが与えられていれば新たにidを記憶する
102
+
103
+ savedId = params.get("id");
104
+
105
+ localStorage.setItem("id", savedId);
106
+
107
+ }
108
+
109
+ //記憶済みidが存在すれば
110
+
111
+ if(savedId !== null){
112
+
113
+ //リンク先のURLにidパラメータを追加する
114
+
115
+ anchor.href += `?id=${savedId}`;
116
+
117
+ }
118
+
119
+ });
120
+
121
+ ```
122
+
123
+
124
+
125
+ NOTE:
126
+
127
+ `localStorage`に格納した値は, デバッグ中であろうが容赦なく残り続けますので, 動作検証をする際には, コンソールから`localStorage.removeItem("id")`とし, 記憶している内容を都度削除するようにしましょう.
128
+
129
+
130
+
131
+ 参考
132
+
133
+ [https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage](https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage)