0

この質問を考えるにはいくつかの方法があります。あなたにとって最も役立つものを自分で決めてください…</p>

  • javascript は「xmp」クラスで非推奨の <xmp> タグを再作成できますか?
  • SO のマークダウン プロセッサのエスケープ タグをインライン コード内で模倣できますか?
  • (metaSO、認めます) SO の md プロセッサはインライン コードでタグをどのようにエスケープしますか?
  • HTML に埋め込まれたマークダウン コード ブロックで < をエスケープできますか?

目標: をエスケープするクラスで<、そのクラスにテキスト <html>、<body>、<head>、<script>、<style>、<body>、および < 内に属さないその他のタグを含めることができます。 body> または、特別な加工をせずに特別な加工を施しています。

<xmp> はこれを達成しました (そして実際には引き続き - 非推奨ですが、まだブラウザーでサポートされています):<xmp><body></xmp>のよう&lt;body&gt;でした。SO のマークダウン プロセッサはこれインラインコードで実現します<body>。これ ;)

<これまでのところ、すべてを置き換えるという私のソリューション&lt;は、あまり特別ではない HTML タグを処理します (<body> 内の静的コンテンツ タグの名前はありますか? <div>、<code>、<span> など)。 「特別な」タグは引き続き < で開始する必要があります。<の代わりに

Javascript:
xmps = document.getElementsByClassName('xmp');
for (var i = 0; i < xmps.length; i++) {
    var xmp = xmp.item(i);
    var newhtml = xmp.innerHTML.replace(/\&gt;/g,"\>").replace(/\&lt;/g,"\<");
    xmp.innerHTML = newhtml;
    }

それで私は書くことができます<div class="xmp">&lt;body></div>

何が許可されますか

<div class="xmp"><body></div>?

またはどうですか?

<div class="xmp">
    <body>
    &/div>
</div>

私のプロジェクトの詳細は重要かもしれません: マークダウンがあるclass="xmp"ので、行頭文字に注意する必要があります>。ユーザー入力がないため、セキュリティは問題になりません(?)。jQueryを使わない解決策を期待しています。

4

1 に答える 1

0

xmpの機能は HTML 解析に関するものであるため、JavaScript を使用して の機能を作成することはできません。そして、要素は、JavaScript が要素を取得できるようになると、ブラウザーによって既に解析されています。

一方で、私はその必要性を感じません。私の知る限り、xmpはすべてのブラウザーでサポートされており、HTML5 CR ではサポートを維持し、新しいブラウザーでもそれを実装する必要があります。また、作成者はそれを使用してはならないとも書かれていますが、これは機能しないという意味でxmpはありません。

于 2013-02-17T08:36:31.583 に答える