次の条件を満たすChromeタブの一意のIDを確立する方法を確認しようとしています:
- 各タブを一意に識別
- 特定のタブについて、ブラウザーの再起動後も同じ状態を維持します (セッション復元されたタブ)
- タブを閉じてから、[閉じたタブを元に戻す] (Ctrl+Shift+T) で再度開いた場合も同じままです。
- タブが重複しても区別されたまま
包括的な解決策を見つけるためにかなり積極的な調査を行いましたが、うまくいくものは何もないようです。私が試した方法を、有効性の高い順に示します。
- Chrome が提供する tab.id を使用:ブラウザ セッション間または閉じる/元に戻す間は保持されません
- GUID を Cookie に入れる:タブごとに一意ではなく、ドメイン/URL ごとにのみ一意です
- GUID を localStorage に配置:ブラウザー セッションと閉じる/元に戻す間で保持されますが、タブごとに一意ではなく、ドメインごとにのみ一意です
- GUID を sessionStorage に入れます:タブごとに一意であり、閉じる/元に戻しても保持され、複製されたタブでは一意ですが、ブラウザ セッション間で消去されます
- 識別可能な Web ページのドキュメント属性を一意のキーとして使用します。これは、私がこれまでに見つけた最良のアプローチです。キーは、次の値からコンテンツ スクリプトを介して構築できます
[location.href, document.referrer, history.length]
。
この最後のアプローチに関して、構築されたキーは、共通の URL、リファラー、および履歴の長さを共有するすべてのタブで一意です。これらの値は、ブラウザーの再起動/セッションの復元と閉じる/元に戻す間で、特定のタブに対して同じままです。このキーは「非常に」ユニークですが、あいまいな場合があります。たとえば、http://www.google.comに対して開かれた 3 つの新しいタブはすべて共通の同じキーを持っています (この種のことはかなり起こります) 。多くの場合、実際に)。
さらに、「GUID を sessionStorage に入れる」メソッドを使用して、現在のブラウザー セッション中に閉じる/元に戻す、および重複したタブの場合に、同じ構築キーを持つ複数のタブ間のあいまいさを解消することができます。しかし、これはブラウザーの再起動間のあいまいさの問題を解決しません。
この最後のあいまいさは、セッションの復元中に、Chrome がどのウィンドウでどのタブを一緒に開くかを観察し、予想される「兄弟」タブの存在に基づいて、どのタブがどのウィンドウに属しているかを特定のあいまいなキーを推定することによって部分的に軽減できます (以前のブラウザーで記録されたセッション)。ご想像のとおり、このソリューションの実装は非常に複雑でやや危険です。また、Chrome が別のウィンドウに復元する同じキーのタブ間でのみあいまいさを解消できます。これにより、同じウィンドウに復元される同じキーのタブが、相容れないほどあいまいになります。
より良い方法はありますか?ブラウザーの再起動 (セッションの復元) と閉じる/元に戻す間で保持される、ブラウザーによって生成された、保証された一意のタブごとの GUID が理想的ですが、これまでのところ、このようなものは見つかりませんでした。