\u200b (零宽度空格) 字符在我的JS代码中。它们从哪里来的?
- 论坛
- \u200b (零宽度空格) 字符在我的JS代码中。它们从哪里来的?
4 浏览
\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的问题。这不可能是我的同事恶作剧,因为他们举止得体。
有什么建议是谁搞乱了我的代码吗?