可能重复:
Why split the <script> tag when writing it with document.write()?
我经常看到以下声明:
document.write("<scr");
document.write("ipt language=\"Javascript\" type=\"text/javascript\" src=\"source url\"></scr");
document.write("ipt>");
这有什么好处?人们为什么不编写整个脚本,如下所示?
document.write("<script ");
答案 0 :(得分:3)
这可能会对您有所帮助:
http://www.webmasterworld.com/forum91/2913.htm
取决于浏览器,其他前面的javascript数量, 以及整体代码的结构如何 是,这样做是为了防止解析器 从解释和 标签作为可执行代码 而不是作为要写的字符串。
我发现如果你这样做,它只会让你头疼 当使用脚本编写脚本时 标签
答案 1 :(得分:2)
这可能是为了遵守标准 - 但在这种情况下他们做错了。
来自description of CDATA data type:
虽然
STYLE
和SCRIPT
元素使用CDATA作为其数据模型,但对于这些元素,CDATA必须由用户代理以不同方式处理。必须将标记和实体视为原始文本并按原样传递给应用程序。 第一次出现的字符序列“</
”(结束标记打开分隔符)被视为终止元素内容的结尾。在有效文档中,这将是元素的结束标记。
所以他们应该像这样分割结束标记开放分隔符</
:
document.write("<script language=\"Javascript\" type=\"text/javascript\" src=\"source url\"><" + "/script>");
答案 2 :(得分:1)
这取决于。当您看到此类代码时,就意味着他们正在生成页面的某些部分 动态 ,否则他们可以轻松地在<script>
标签下方编写。< / p>
有时,此类代码用于 恶意 目的。
答案 3 :(得分:0)
这是不是有些人试图通过防病毒软件的脚本扫描程序?
回答你的问题:
这样做没有任何好处。事实上,它实际上更慢,因为你正在调用更多的函数,创建更多的字符串对象,并附加更多的字符串。
对于旧版浏览器,我猜它可能与<!-- <script> blargh </script> //-->
答案 4 :(得分:0)
我相信这是将脚本潜入动态页面的某种原始代码混淆。例如,如果某个网站过滤了字符串“<script
”的用户输入,那么这段代码仍然可以通过。
这很可能是某种尝试在某种程度上注入恶意代码的行为。