\u200b (零宽度空格) 字符在我的JS代码中。它们从哪里来的?

4 浏览
0 Comments

\u200b (零宽度空格) 字符在我的JS代码中。它们从哪里来的?

我正在使用NetBeans IDE 7.0.1开发一个Web应用程序的前端。最近我遇到了一个非常恶心的bug,最后我终于解决了它。

假设我有这样的代码:

var element = '';
$('#bar').append(element);

我注意到当我在Chrome中看到size属性不起作用时(没有在其他浏览器中检查),意味着出了些问题。当我在检查器中打开该元素时,它被解释为:


这很奇怪。在手动逐个字符重新输入element字符串后,这个bug消失了。当我撤销这个更改时,我注意到Netbeans警告我旧代码中存在一些Unicode字符。它是\u200b - 在每个'='之后,在'['和']'之间以及字符串末尾的零宽空格。因此,字符串看起来正常,因为零宽空格没有显示出来,但在转义它们之后,我的字符串变成了:

'\u200b'

那么这些到底是从哪里来的?

我不确定我从哪里复制了element代码,但肯定是以下之一:

  • Netbeans编辑器的其他窗格中的HTML模板文件;
  • Google Chrome检查器的“复制为HTML”操作;
  • Google Chrome源代码查看页面(非常怀疑)。

但是我无法用其中任何一种方式重现这个bug。

我使用的是Netbeans 7.0.1和Windows 7下的Google Chrome 13.0。没有运行键盘切换器或类似的东西。我还使用Git进行版本控制,但我没有拉取那段代码,所以很不可能是Git的问题。这不可能是我的同事恶作剧,因为他们举止得体。

有什么建议是谁搞乱了我的代码吗?

0