Я разрабатываю интерфейс веб-приложения с использованием IDE NetBeans 7.0.1. Недавно я была очень неприятная ошибка, которую я наконец исправил.
Допустим, у меня есть код
var element = '<input size="3" id="foo" name="elements[foo][0]" />';
$('#bar').append(element);
. Я заметил, что что-то пошло не так, когда я увидел, что атрибут size
не работает в Chrome (не проверял в других браузерах). Когда я открыл этот элемент в Inspector, он был интерпретирован как что-то вроде
<input id=""3"" name=""elements[foo][0]""
size=""foo"" />
, что было довольно странно. После ручного повторного ввода строкового символа элемента
в символьном виде ошибка исчезла. Когда я отменил это изменение, я заметил, что Netbeans предупредил меня о некоторых символах Unicode в моем старом коде. Это было
- пробелы нулевой ширины после каждого '=', между '] [' и в конец строки. Итак, строка выглядела нормально, потому что пробелы нулевой ширины не отображались, но после их экранирования моя строка была
'<input size=\u200b"3" id=\u200b"foo" name=\u200b"elements[foo]\u200b[0]" />\u200b'
Где, черт возьми, я их взял?
Я не уверен, где я скопировал c элемент
из, но определенно один из следующих:
Но я не могу воспроизвести ошибку ни с чем из этого.
Я использую Netbeans 7.0.1 и Google Chrome 13.0 под Windows 7. Никаких переключателей клавиатуры или чего-то подобного. Бег. Также я использую Git для контроля версий, но я не извлекал этот код, поэтому очень маловероятно, что Git виноват. Это не может быть глупой шуткой моих коллег, потому что они довольно хорошо воспитаны.
Есть предложения, кто испортил мой код?