IE11 で mkdocs の脚注のジャンプに失敗する場合の解決策


tl;dr

Python Markdown を 3.1 以上に更新して mkdocs.yml に次のような設定を追加する。

markdown_extensions:
  - footnotes:
      SEPARATOR: _

経緯

公式の footnotes を IE11 で開いて、例に含まれるリンクをクリックするとページが再読み込みされて動作しない、という相談を受けた。ほかのブラウザは問題なかったので IE だけで起きる不具合であることはわかったが、無視するわけにはいかない。

原因は皆目見当がつかなかったが URL のフラグメント部分(上の例で #fn:1)につく : がいかにも怪しかったので Python Markdown を調べていくと、つい半年くらい前に SEPARATOR という設定項目が追加されたとあった。デフォルトのコロンから適当な文字列に変更したら動作するようになった(僥倖)。

ただ、オプションを設定しないと期待通りに動作しないのが気持ち悪かったので issue12 で相談した結果、次のような結論を得た。

  • この部分にコロンを使えるのは RFC3986 に沿っている。
  • 前述のコミット以前からコロンを使っていたが、不具合報告はこれが初めてである。 IE11 は EOL を待つだけなので、ライブラリ側は現状のままで気にする人が設定するのがベストではないか。
  • 前述の例を含め、設定しないと問題が出る場合があるので Python Markdown に関する依存関係は近いうちに更新してくれる(バージョンが古いと SEPARATOR オプションの解釈に失敗するエラーが出る)、かも。