スクリプトタグを含むコードセグメントを[htmlで]表示し、同時にそのスクリプトコードのブラウザ実行を防ぐために使用できる方法は何ですか?
5 に答える
<
すべてのと文字をエンコードする>
ので、最終的には
<div>
<h2>Here's some JS code</h2>
<pre>
<script type="text/javascript">
var x = 7;
var y = 10;
if (x < y) {
alert('this alert will not fire!');
}
</script>
</pre>
</div>
次のような特別なhtml関連の文字をエスケープする必要があります。
<body>
<p><script type="text/javascript" ></p>
<p>alert("hello world!");</p>
<p></script><br />
</p>
</body>
完全なリストについては、http ://www.theukwebdesigncompany.com/articles/entity-escape-characters.phpを参照してください。
すべてのHTMLエンティティ(<、>、など)をエンコードし、すべてをpreタグでラップしてフォーマットを維持します。
<pre>
<script type="text/javascript">
alert('test');
</script>
</pre>
便利なコンバーター: http: //www.rishida.net/tools/conversion/
HTML2の時代には、まさにこれを実現するための要素がありまし<xmp>
た。<listing>
例えば
<xmp>Because this is HTML2, there isn't a <script> tag to worry about anyway.</xmp>
また、タグを要素の開始と終了として解釈するのではなく、コンテンツとして表示します(</xmp>
ただし、明らかな理由により、タグを表示することはできませんでした)。
ただし、この機能を使用すると、ブラウザの作成者とWebの作成者の両方にとって、実際には、支援したよりもはるかに多くの問題が発生しました。したがって、それらはHTML3.2で非推奨になり(またはおそらくHTML3ですが、それがHTML3の唯一の引数ではありませんでした。もう1つは、「HTML3」が含まれるドキュメントがカウントされたものでした...)、HTML4で削除されました。
したがって、行うべき唯一のことはそれを脱出することです。
<pre>
書式設定に役立ちますが、代わりに各スペースを改行しないスペースと交換するために、find-replaceを実行することがよくあります。
これで、これまでにないほどきれいにレンダリングできます。beautyOfCode<xmp>
やgoogle-code-prettifyの<listing>
ようなライブラリがあり、手間のかかる作業を行うことができます。
正直なところ、これがこれを行うのに最適な方法かどうかはわかりません。そうでない場合は、誰かに教えてもらいたいと思います。
コンバーターを介してコードを実行したくない場合は、このjQuery関数を使用して.html
、要素のをとして表示できます.text
。タグの中に包まれて、<pre>
フォーマットされたコードを持っています。
var pre = $("pre").html();
$("pre").text(pre);