5

每隔一段时间,我会看到一个 HTML 代码片段:

%3Cscript

%3C替换<. _ 这是因为代码是自动生成的还是需要在编辑器中正确显示,还是由于某种原因以这种方式显式编码并且需要将该表单保留在 HTML 网页上?如果这里有帮助的话,我正在质疑的代码行的完整开头:

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

如果你%3C用 a替换了代码行,那行代码就不能正常工作<吗?


我使用过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>'需要在 document.writing 内联脚本时不结束当前脚本块

于 2012-12-07T21:32:44.247 回答