5

ときどき、次のような HTML コード スニペットが表示されます。

%3Cscript

は を%3C置き換えます<。これは、コードが自動生成されたか、エディターで適切に表示する必要があるためですか、それとも何らかの理由でそのように明示的にコード化されていて、そのフォームを HTML Web ページに保持する必要があるためですか? これが役立つ場合は、私が質問していたコード行の完全な冒頭を以下に示します。

document.write(unescape('('%3Cscript

%3Cを に置き換えても、コード行は問題なく動作しません<か?


私はJagPDFを数回使用しましたが、最後の経験から、pdf にフォントを埋め込むことで問題が解決する可能性があると思います。

4

3 に答える 3

3

unescape()Javascript 関数は、ドキュメントに書き込まれる前に変換します%3C。これは明らかに、ソース内のリテラル タグを認識してその意味を誤解する<可能性のあるスキャナーのトリガーを回避するための試みです。<script

于 2012-12-07T21:29:38.580 に答える
1

HTML に埋め込まれたスクリプト タグに JavaScript を記述する場合、スクリプト タグ</script>が終了するため、シーケンスはスクリプト内のどこにも表示できません。

<script type="text/javascript">
    var a = "<script>alert('hello world');</script>";
</script>

多かれ少なかれ次のように扱われます。

<script type="text/javascript">
    var a = "<script>alert('hello world');
</script>
";
<script></script>

html パーサーの目には。

mplungjan が言ったように、これは複雑な方法であり<\/script>、javascript 文字列リテラルで簡単に機能させることができます。

<script type="text/javascript">
    var a = "<script>alert('hello world');<\/script>";
</script>

これはdocument.write技術的にはまったく関係ありません。JavaScript の文字列リテラルでdocument.write必要な一般的な場所です。"</script>"

"<script>"また、実際にはそのままでまったく問題ないことにも注意してください。それ"</script>"は、コードから切り取った問題です。

于 2012-12-09T11:55:01.110 に答える
0

前述のとおり、スキャナをだます試みの可能性があります。

より便利で重要なのは、 ドキュメントのインラインでスクリプトを書くときに、現在のスクリプト ブロックを終了しないようにすることです<\/script>'...<scr'+'ipt>'

于 2012-12-07T21:32:44.247 に答える