URLクリーン

URLクリーン

アドレスバーからハッシュを削除する

ブラウザのアドレスバーには、URLに加えて、URLパラメータ(クエリー文字列)と、ハッシュが表示される。このサイトのトップページでいうと、
  例:https://www.muhyo.com/index.html?ymd=20230614#999
というように、「?ymd=20230614」が URL パラメータであり、「#999」がハッシュになる。

このページをブックマークすると、アドレスバーに表示されているURLパラメータ(クエリー文字列)やハッシュを含めてまるごとにブックマークされる。ブックマーク際してアドレスバーの表示内容を編集して不要な部分を削ることはできるのだが、通常はそのままブックマークしてしまうことが多いと思う。

このホームページでは「自己リダイレクト」機能の中でURLパラメータを削除しているので、アドレスバーの中にはURL以外はハッシュだけが残っている。
  例:https://www.muhyo.com/index.html#999

ハッシュを含んだままブックマークすると、次回、ブックマークからそのページを表示した場合は画面のトップからではなく、ブックマークした時点で表示されていたところまでスクロールした状態で表示される。

それはそれで問題ないことであり、本来のブックマークの目的にかなった動作ということができる。しかし、通常のニーズは次のどれであろうか?

(1) ページの中のその位置を閲覧したい。

(2) 部分ではなく、そのページ全体を再度閲覧したい。

思うに、(1) を基本とし、必要に応じてブックマーク時に整正することにより (2) の目的を達成するというのがブラウザの基本機能のように思う。つまり、(2) が目的であれば、アドレスバーのハッシュを削除してからブックマークすれば良いということなのだ。

だがしかし、自分としては、(1) と (2) は逆であると思う。つまり、(2) が基本機能(つまりデフォルト)である方が都合が良いと思う。

ブラウザのベンダーにすると、(2) を基本機能とすると、(1) の用途に応えるためには、より複雑なステップを設けなくてはならない。つまり、単純に考えて(1) と (2) を選択する機能であり、ブッマークボタンを2種類用意する必要がある。さらに言うと、URLパラメータとハッシュの片方若しくは両方を含めるか、それともURL本体のみかといった計4通りの選択が必要になる。使い勝手を考えると複雑なUIになってしまう。このあたりも現在の機能に落ち着いた理由なのかもしれない。

ということで、ブラウザは (1) を基本機能とするところを、このサイトに関しては (2) を基本機能とするように変更するプログラムを設定した。プログラムは javascript で次の8行からなる。

var clear = ()=>{

history.replaceState(null,null,window.location.pathname);

}

var clear_t = ()=>{

setTimeout(clear, 200);

}

window.addEventListener('hashchange', clear_t, false);

window.addEventListener('load', clear_t,false);

このプログラムはファィル名を url_clean.jp とし、ルートディレクトリにおき、呼び出すときは、</body> の直前で

<script src="/url_clean.js"></script>

と記述すればよい。それによって、ハッシュを削除することができる。

※掲載記事及び写真に係る著作権は著者に帰属します。著作権を侵害するような利用を禁止します。掲載記事及び写真の全部または一部を複製、蓄積、出版、送信、頒布および改変する等、著者の権利を侵害する利用をすることはできません。