WebStorageを利用したサンプルを簡単に書いてみました。
サンプルではsessionStorageを利用していますが、長期的な保存をしたい場合はlocalStorageを利用してください。sessionStorageはそのタブのみでしか情報を保存しません。
Web Storage APIの仕様や使い方はMDNのページがわかりやすいです。
HTML要素をクリックした際のイベントの発火(発生)は onclick=
を使用してください。その他のイベントハンドラについては以下のページを参考にしてください。
html
1<body>
2 <ul>
3 <li><a onclick="linkClick('google')" href="https://google.com" target="_blank">Google<span id="google"></span></a></li>
4 <li><a onclick="linkClick('yahoo')" href="https://yahoo.co.jp" target="_blank">Yahoo<span id="yahoo"></span></a></li>
5 <li><a onclick="linkClick('amazon')" href="https://amazon.co.jp" target="_blank">Amazon<span id="amazon"></span></a></li>
6 </ul>
7</body>
js
1//クリックされているか否かを次のオブジェクトに格納する
2let link_cliked = {}
3//ページ読み込み終了時に実行する
4window.onload = function(){
5 //sessionStorageの保存はタブごとに区切られるので注意。
6 //ブラウザで永続させたい場合はlocalStorageを使う
7 link_cliked.google = sessionStorage.getItem('google') || false //sessionStorageにある場合はその値を、ない場合はfalseを返す
8 link_cliked.yahoo = sessionStorage.getItem('yahoo') || false
9 link_cliked.amazon = sessionStorage.getItem('amazon') || false
10 clikedLinkDisplay()
11}
12//リンクをクリックしたらsessionStorageとlink_cliked{}に保存する
13function linkClick(site_name){
14 sessionStorage.setItem(site_name,true);
15 link_cliked[site_name]=true;
16 clikedLinkDisplay()
17}
18//リンクをクリックしたことがあれば #clicked をつける
19function clikedLinkDisplay(){
20 if(link_cliked.google) document.getElementById('google').innerHTML = "#clicked"
21 if(link_cliked.yahoo) document.getElementById('yahoo').innerHTML = "#clicked"
22 if(link_cliked.amazon) document.getElementById('amazon').innerHTML = "#clicked"
23}