每隔一段时间,我会看到一段HTML代码段:
%3Cscript
%3C
取代<
。这是因为代码是自动生成的还是需要在编辑器中正确显示,还是由于某种原因以明确的方式进行编码,需要将该表单保留在HTML网页上?如果它有用,这里是我质疑的代码行的完整开头:
document.write(unescape('('%3Cscript
使用%3C
替换<
时代码行不会很好吗?
答案 0 :(得分:3)
unescape()
Javascript函数会在将%3C
写入文档之前将<
转换回<script
。这显然是为了避免触发可能在源代码中看到文字{{1}}标记的扫描程序并误解其含义。
答案 1 :(得分: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所说的那样,这是一种令人费解的方式,只需{j}字符串文字<\/script>
即可使其工作:
<script type="text/javascript">
var a = "<script>alert('hello world');<\/script>";
</script>
这在技术上与document.write
无关,只是document.write
是javascript字符串文字中需要"</script>"
的常见位置。
另请注意"<script>"
确实完全没问题。这只是"</script>"
,这是你从代码中删除的问题。
答案 2 :(得分:0)
如上所述,可能会欺骗扫描仪。
更有用,更重要的是
当document.writing脚本内联时,<\/script>
或'...<scr'+'ipt>'
不需要结束当前脚本块