質問編集履歴

1

補足

2020/09/18 07:16

投稿

Y.NINOMIYA
Y.NINOMIYA

スコア32

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,75 @@
31
31
 
32
32
 
33
33
  どなたか回答よろしくお願いいたします。
34
+
35
+
36
+
37
+ ### 追記
38
+
39
+ マークダウンで記述するようにしているため、{{content | markdown}} と、フィルターをかけています。
40
+
41
+ 以下のコードのようにJavaScriptで<pre>内をエスケープする処理も考えましたが、bleachで許可していないタグなどは特殊文字で表示されてしまいます。予めエスケープされているので当然といえば当然なのでしょうが....
42
+
43
+ ```JavaScript
44
+
45
+ var escapeHtml = (function (String) {
46
+
47
+ var escapeMap = {
48
+
49
+ '&': '&amp;',
50
+
51
+ "'": '&#x27;',
52
+
53
+ '`': '&#x60;',
54
+
55
+ '"': '&quot;',
56
+
57
+ '<': '&lt;',
58
+
59
+ '>': '&gt;'
60
+
61
+ };
62
+
63
+ var escapeReg = '[';
64
+
65
+ var reg;
66
+
67
+ for (var p in escapeMap) {
68
+
69
+ if (escapeMap.hasOwnProperty(p)) {
70
+
71
+ escapeReg += p;
72
+
73
+ }
74
+
75
+ }
76
+
77
+ escapeReg += ']';
78
+
79
+ reg = new RegExp(escapeReg, 'g');
80
+
81
+ return function escapeHtml (str) {
82
+
83
+ str = (str === null || str === undefined) ? '' : '' + str;
84
+
85
+ return str.replace(reg, function (match) {
86
+
87
+ return escapeMap[match];
88
+
89
+ });
90
+
91
+ };
92
+
93
+ }(String));
94
+
95
+
96
+
97
+ var pre = document.querySelectorAll('pre');
98
+
99
+ for(var i = 0; i < pre.length; i++) {
100
+
101
+ pre[i].innerHTML = escapeHtml(pre[i].innerHTML);
102
+
103
+ }
104
+
105
+ ```