ページの一部だけ差し替えてpushState()
で表示されるURLだけを更新という手法が広まりしばらく経った。全般的に素晴らしい仕組みで、みんなどんどん使えば良いと思うのだけど、head
要素の子のことをちょっと気にして欲しいかなと思う。
よく見る駄目なケースはRSS Auto-discoveryが死ぬもの。例えばMediumのトップページにはRSS Auto-discoveryはないので、Firefoxの購読ツールバー・ボタンはもちろん無効のまま。そこからカテゴリやユーザーのページに移動しても無効のままなので、RSSが無いように見えるが実際はある。コンテンツ部分の差し替えのみで、rel="alternate"
を指定したlink
要素が追加されないため、有効にならない。これではRSSを購読しようと思ってもなかなか難しい。
また、FirefoxでMediumで特定のカテゴリを直接開いた場合は購読ツールバー・ボタンは有効になるが、こちらでも問題が起きる。例えばその状態からある記事を読んで興味をもったので、その記事を書いた人のページに移動しRSSを購読しようとしたとする。この場合、最初に開いたカテゴリのRSSが購読される。これも適切にhead
要素内が更新されないことによるバグと言って良い。
ブラウザー(や拡張)側のサポートも必要なのかもしれないので一概には言えないけど、少なくともhead
要素内のことも意識して、必要かもしれないと思ったらちゃんと更新した方がベターだと思う。実装もID属性を振っておき、削除か追加を適切に行うだけなので難しくない。