Internet Explorer 11でfile:///
で始まるローカル・ファイルのURLをHistory APIで変更すると、ドライブレターがどんどん増えていく現象が起こることを知った。実行する度に/C:
が先頭に追加されていく。
history.replaceState(null, '', location.pathname);
相対URLで書きかえが起こるはずなので、こうするとクエリー文字列やフラグメント識別子を削除してクリーンなURLに書き換わるはずだ。実際、普通のウェブサイトで試すと問題なくうまくいく。しかしfile:///
プロトコルでローカルのファイルを開いている場合、想定通りに動かない。
> location.pathname < "/C:/Users/Kyo/Desktop/test.html" > history.replaceState(null, '', location.pathname) < undefined > location.pathname < "/C:/C:/Users/Kyo/Desktop/test.html"
このようにドライブレターが増殖する。URLの書き換え自体はこのおかしなURLにちゃんと(?)書き換わっているので、この状態で再読込すると「このページは表示できません」になる。
明らかにバグと言えそうだが、実際に何か致命的なことが起こるとも思えないバグだ。報告はしておいたけど、悪いこともできなそうな気がするので放置されそうだ。