質問: Webページのリンク先ページを表示する方法として、リンクを直接クリックするだけでなく、右クリックから「新しいタブで開く」「新しいウィンドウで開く」で開いたり、新しいタブ(ウィンドウ)を開いてアドレスバーにリンク先のURLを直接貼り付けるなど、様々な方法があると思いますが、どのような方法で表示したかを(サーバーサイドで)識別する方法はあるでしょうか? * 二重起動の抑止 * 複数タブの識別 などが目的です。 リンクを直接クリックしたかどうかは、clickイベントでhref属性を書き換える(適当なパラメータを後ろにつけるとか)ことで分かりそうですが、他に方法があるでしょうか。
回答: localStorage はタブ・ウィンドウ間を通して値を共有できます。 ``` // localStorageに値があれば二重起動 if (localStorage.getItem('running')) { alert('新しいタブまたは新しいウィンドウで開きました'); } // 値を設定 (ここでは単に true とします) localStorage.setItem('running', true); // いつまでも残るので unload または beforeunload で消す window.addEventListener('beforeunload', function() { localStorage.removeItem('running'); }, false); ```