前提・実現したいこと
preタグ内の<>&等のエスケープをしているところで動作がうまくいかなくなってしまいました。
htmlドキュメントにpreタグを用意し、javascriptでのpreタグ内のエスケープを試みました。
pre内テキストは、そのままべた書き通りに表示させたいです。
該当のソースコード
html
1<pre> 2Map <String, Integer> hashMap = new HashMap<>(); 3 4hashMap.put("sato", 50); 5hashMap.put("ito", 60); 6 7System.out.println(hashMap.get("sato")); //50 8</pre>
上記HTMLを、
javascript
1const htmlEscape = (str) => { 2 if (!str) return; 3 return str.replace(/[<>&"'`]/g, (match) => { 4 const escape = { 5 '<': '<', 6 '>': '>', 7 '&': '&', 8 '"': '"', 9 "'": ''', 10 '`': '`' 11 }; 12 return escape[match]; 13 }); 14} 15 16document.querySelectorAll('pre').forEach(pre =>{ 17 pre.innerHTML = htmlEscape(pre.innerHTML) 18}) 19
このようにエスケープしてみたところ、
Map <string, integer=""> hashMap = new HashMap<>(); hashMap.put("sato", 50); hashMap.put("ito", 60); System.out.println(hashMap.get("sato")); //50 </string,>
画面上には上記のように表示されました。
試したこと
いくつか他のエスケープ方法を試してみましたが、結果は同じでした。
オートコンプリートみたいな挙動をしているところもあるのがなぜかわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/05 12:25