#状況
VScode上でMarkdown Preview Enhancedを使い、HTMLで文章を書いているのですが、
Markdownで作ったhtmlファイルのページ内リンク(アンカー)がIEで使えません。
Markdown Preview EnhancedをインストールしたVScode上で
markdown
1[ほげ](#ほげ) 2#ほげ
としてヘッダー「ほげ」にアンカーを作ります。
そしてCtrl+K→Vを押してプレビュー画面を表示させます。
そしてプレビュー画面を右クリックし、html化します。
そしてそのhtmlをChromeで開くとアンカーは使えますが、
IEで開くと、アンカーは使えません。
そのとき生成されるhtmlのソースがこれです。
html
1... 2<a href="#%E3%81%BB%E3%81%92">ほげ</a><br> 3URL Standardでは、URLの 4... 5<h1 class="mume-header" id="%E3%81%BB%E3%81%92">ほげ</h1> 6...
#動作
調べたところ、このアンカーというのは、html化する際、
まずヘッダーの名前から自動的にIDを生成して、
<h1 class="mume-header" id="ヘッダー名">ヘッダー名</h1>
としてヘッダーを作ります。
そしてマークダウン上で
[](#ヘッダー名)
と書くと、html化する際、
<a href="#ヘッダー名"></a>
とすることで、アンカーを作っているようです。
#経緯
昔はLatin文字以外をヘッダーにしたら、
たいていidがおかしくなって、アンカーは使えなかったらしいです。
Latin以外はURLエンコーディングしてアンカーを使えるように
pull requestしてくれた人がいたらしいです。
Markdown-it の markdown-it-named-headers plugin で custom slugify を設定する
ただ、URLエンコーディングはIEではIDとして使えないようです。
状況としては
ページ内リンクが日本語だとIEでリンクが効かない
このブログ記事と同じ問題です。
#謎
ただこの問題が単純じゃないのは、下記のサイト(Qiita)のようにヘッダーにURLエンコーディングされたIDを使っていても、
IEでも正しくアンカーが使える場合があるようです。
[Qiita Markdown記法]ページ内リンク・注釈・折りたたみ等
#回答お願いします
この謎な挙動が解明され、IEでもMarkdownで作ったhtmlをスムーズに使えるようになると大変助かります。
#環境
Windows 10 Pro
Visual Studio Code 1.30.1
Markdown Preview Enhanced 0.4.3
回答2件
あなたの回答
tips
プレビュー