【发布时间】:2015-10-04 07:08:36
【问题描述】:
我在本地开发过程中发现 ​ 被插入到页面中。它的行:​​​​​​​​​
这是一个基本页面,通过 CodeKit 托管在本地 Web 服务器上。但是,当我通过在资源管理器中双击它直接从 pc 将页面加载为 file:// 时,也会出现此问题。
最初,该文件包括:
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
/* Some JS */
</script>
</head>
<body>
</body>
</html>
我很困惑,所以我尝试添加一个文档类型<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
仍然没有运气,然后通过谷歌搜索我注意到有关字符集的事情,所以我添加了 UTF-8。 <meta charset="UTF-8"> 哦,它不见了。但不完全是。检查源代码,​ 现在已更改为 &#8203,但在页面上不再可见。也称为零宽度空间? (经过一番谷歌搜索)。
为什么会这样?
最终代码,现在在 Chrome Dev Tools Inspector 中显示零宽度空间。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
/* With or without JS code in these, the issue occurs */
</script>
</head>
<body>
Hello World
</body>
</html>
进展:
我终于删除了所有 JS,但留下了脚本标签,并设法将其缩小为由 <script></script> 标签引起的。即使是空的。没有这些,奇怪的字符就不会显示在页面上或 Inspector 中。
为什么会这样?我知道最佳做法是使用外部 JS 文件,但为什么会这样。很奇怪。
相关问题可以在这里找到参考,这有点帮助,但仍然没有解决它,因为问题与我的不同:Why is "​" being injected into my HTML?
更新 1 哎呀。菜鸟错误。忘记脚本标签不会自动关闭。改了,还是有问题。更正了上面的最终代码。
更新 2 根据我在下面的回答修复了问题。虽然没有找到关于为什么会发生这种情况的解释。
更新 3 有些人仍在对此投票,所以我觉得我必须解释一下。是的,获得高票的答案之一概述了关闭标签的错字。是的,在我复制到 SO 时,这是一个错字。原始代码没有自闭合标签。无论哪种方式,它对 OP 问题都没有影响,这就是为什么会出现这些随机字符。
【问题讨论】:
-
令人讨厌的是,可运行代码片段中并未显示该问题。和本地代码有关吗?
-
“脚本”标签不是“自动关闭”标签。必须一直是“”。
-
谢谢。已经尝试过了,但问题仍然存在。
-
@JaromandaX,是的,谢谢你看到了。我就是这样知道它的零宽度空间的。但仍然无法弄清楚它为什么会发生。我想看看它是否是我的编辑器(Sublime Text 2),但到目前为止还没有运气。当我删除 标签时,问题就消失了。那么它不可能是编辑器吧?
标签: javascript html encoding utf-8