\ u200b (Пробел нулевой ширины) в моем JS-коде. Откуда они взялись?

Я разрабатываю интерфейс веб-приложения с использованием IDE NetBeans 7.0.1. Недавно я была очень неприятная ошибка, которую я наконец исправил.

Допустим, у меня есть код

var element = '<input size="3" id="foo" name="elements[foo][0]" />';
$('#bar').append(element);

. Я заметил, что что-то пошло не так, когда я увидел, что атрибут size не работает в Chrome (не проверял в других браузерах). Когда я открыл этот элемент в Inspector, он был интерпретирован как что-то вроде

<input id="&quot;3&quot;" name="&quot;elements[foo][0]&quot;" 
    size="&quot;foo&quot;" />

, что было довольно странно. После ручного повторного ввода строкового символа элемента в символьном виде ошибка исчезла. Когда я отменил это изменение, я заметил, что Netbeans предупредил меня о некоторых символах Unicode в моем старом коде. Это было - пробелы нулевой ширины после каждого '=', между '] [' и в конец строки. Итак, строка выглядела нормально, потому что пробелы нулевой ширины не отображались, но после их экранирования моя строка была

'<input size=\u200b"3" id=\u200b"foo" name=\u200b"elements[foo]\u200b[0]" />\u200b'

Где, черт возьми, я их взял?

Я не уверен, где я скопировал c элемент из, но определенно один из следующих:

  • Другая панель редактора Netbeans с файлом шаблона HTML;
  • Инспектор Google Chrome, действие «Копировать как HTML»;
  • Google Страница просмотра исходного кода Chrome (очень сомнительно).

Но я не могу воспроизвести ошибку ни с чем из этого.

Я использую Netbeans 7.0.1 и Google Chrome 13.0 под Windows 7. Никаких переключателей клавиатуры или чего-то подобного. Бег. Также я использую Git для контроля версий, но я не извлекал этот код, поэтому очень маловероятно, что Git виноват. Это не может быть глупой шуткой моих коллег, потому что они довольно хорошо воспитаны.

Есть предложения, кто испортил мой код?

43
задан mplungjan 5 December 2017 в 13:55
поделиться