【问题标题】:Why is ​ or &#8203 being inserted into my html body randomly?为什么 ​ 或 &#8203 被随机插入到我的 html 正文中?
【发布时间】: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>

我很困惑,所以我尝试添加一个文档类型&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;

仍然没有运气,然后通过谷歌搜索我注意到有关字符集的事情,所以我添加了 UTF-8。 &lt;meta charset="UTF-8"&gt; 哦,它不见了。但不完全是。检查源代码,​ 现在已更改为 &amp;#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,但留下了脚本标签,并设法将其缩小为由 &lt;script&gt;&lt;/script&gt; 标签引起的。即使是空的。没有这些,奇怪的字符就不会显示在页面上或 Inspector 中。

为什么会这样?我知道最佳做法是使用外部 JS 文件,但为什么会这样。很奇怪。

相关问题可以在这里找到参考,这有点帮助,但仍然没有解决它,因为问题与我的不同:Why is "&#8203;" being injected into my HTML?

更新 1 哎呀。菜鸟错误。忘记脚本标签不会自动关闭。改了,还是有问题。更正了上面的最终代码。

更新 2 根据我在下面的回答修复了问题。虽然没有找到关于为什么会发生这种情况的解释。

更新 3 有些人仍在对此投票,所以我觉得我必须解释一下。是的,获得高票的答案之一概述了关闭标签的错字。是的,在我复制到 SO 时,这是一个错字。原始代码没有自闭合标签。无论哪种方式,它对 OP 问题都没有影响,这就是为什么会出现这些随机字符。

【问题讨论】:

  • 令人讨厌的是,可运行代码片段中并未显示该问题。和本地代码有关吗?
  • “脚本”标签不是“自动关闭”标签。必须一直是“”。
  • 谢谢。已经尝试过了,但问题仍然存在。
  • @JaromandaX,是的,谢谢你看到了。我就是这样知道它的零宽度空间的。但仍然无法弄清楚它为什么会发生。我想看看它是否是我的编辑器(Sublime Text 2),但到目前为止还没有运气。当我删除 标签时,问题就消失了。那么它不可能是编辑器吧?

标签: javascript html encoding utf-8


【解决方案1】:

您的 html 脚本部分无效(格式不正确)。你有:

<script src="https://code.jquery.com/jquery-2.1.1.min.js" />
<script>
</script>

应该是:

<script src="https://code.jquery.com/jquery-2.1.1.min.js">
</script>

【讨论】:

  • 感谢您发现错字。但不太适合纠正。对于我的问题,它实际上应该是:&lt;script src="https://code.jquery.com/jquery-2.1.1.min.js" /&gt; 问题仍然存在。我已经尝试在标签中使用 JS,只是 cmets,或者只是空白。但仍然会发生。很奇怪
  • 正如我上面评论的,脚本标签不能以“/>”结尾。从不。
  • &lt;script src="..." /&gt; 不是有效的 html
  • @Russell 这不是拼写错误,&lt;script&gt; 标签不是自动关闭的,&lt;script /&gt; 不是有效的 HTML,它必须是 &lt;script&gt; &lt;/script&gt;
  • 啊,我明白我做了什么让你感到困惑。我的错。在我上面放的 sn-p 中,我再次自行关闭了它......但相信我,在实际代码中,它是正确的。我再次将其粘贴到问题中。我按照建议进行了更改,但问题仍然出现。请查看更新后的问题。
【解决方案2】:

我已将您的代码粘贴到Windows 中的Notepad,然后将其保存在本地并从FireFoxChrome 浏览它,但没有看到您的问题。

这可能是由有问题的 jQuery 加载引起的。尝试排除加载 jQuery 或尝试在本地加载,而不是从 CDN 或任何在线位置加载。

你也可以查看这个类似的问题:Why are these wierd characters being inserted in Facebook iframe when using jQuery? ​

【讨论】:

  • 感谢测试。是的,我试图将它从 SO 复制到 Sublime Text 作为一个空白的新文件,它似乎已经解决了这个问题。很奇怪。我现在已经从旧文件中复制了所有其他代码,完全替换它,问题不再存在。这意味着它必须是字符编码问题还是什么? Sublime 是纯文本,所以看起来很奇怪。但是,现在已经没有了。而且我认为这将是无法解释的其中之一,因为它不能被其他人复制。不过,对于将来在 Google 中发现此内容的其他人很有用。
【解决方案3】:

自我回答,因为我没有找到代码中奇怪外观的解释,但我确实找到了解决问题的方法。

将所有其他代码从旧文件中复制到一个全新的空白文件中,逐块完全替换它,问题似乎就消失了。

这意味着它一定是字符编码问题还是什么? Sublime 是纯文本,所以看起来很奇怪。但是,现在已经没有了。而且我认为这将是无法解释的其中之一,因为它不能被其他人复制。不过,对于将来在 Google 中找到此内容的其他人很有用。只需将代码逐块复制到新文件中...

解决方案/解决方法修复,没有理由首先发生这一切......:s

【讨论】:

  • 不确定在这些情况下的礼仪是什么,因为解决方案只是逐块复制到一个新文件中。我真的不想将我的答案标记为答案,因为有很多人在尝试解决这个问题时非常有帮助。如果没有接受的答案,我应该保持原样吗?
  • 我认为,虽然没有其他任何解决方案,而您的答案是解决方法而不是解决方案,但我认为您可以保持原样。至于好奇,你还有导致问题的原始文件吗?如果是,是否可以将它(压缩)放置到某个共享服务器?这是一个非常有趣的问题,我想更深入地研究它。
  • 我猜Sublime 类似于Notepad。您最好的选择是以ASCII 格式保存文件。它将消除任何Unicode/None ASCII 字符。
  • 支付,我会检查的。我想我没有它了,但我会检查。谢谢。 Afsharm,是的,我会检查这些设置
  • 斯维里。你在说谁......在你之前有很多cmets,不清楚你的意思是什么或谁。如果你的意思是我回复我......?您的评论本身听起来像是一种复制和粘贴,它是泛化的,而不是问题的上下文......
【解决方案4】:

我在 Mac 上遇到了同样的问题:这就是问题所在。我从 PDF 复制粘贴,所以我添加了一些仅显示在浏览器上的特殊字符。解决方案是删除周围的一些字符,然后手动重新输入。

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 2013-08-30
    • 1970-01-01
    • 2023-03-24
    • 2023-03-21
    • 2011-01-27
    • 2016-11-14
    相关资源
    最近更新 更多