Как неразрывный пробел представлен в строке JavaScript? - PullRequest
85 голосов
/ 08 марта 2011

Это, видимо, не работает:

X = $td.text();
if (X == ' ') {
X = '';
}

Есть ли что-то в неразрывном пробеле или амперсанде, которое JavaScript не любит?

Ответы [ 4 ]

200 голосов
/ 08 марта 2011

  является сущностью HTML.При выполнении .text() все HTML-сущности декодируются в свои символьные значения.

Вместо сравнения с использованием сущности сравнивайте с использованием фактического необработанного символа:

var x = td.text();
if (x == '\xa0') { // Non-breakable space is char 0xa0 (160 dec)
  x = '';
}

Или вы также можете создатьсимвол из кода символа вручную в Javascript-экранированном виде:

var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
  x = '';
}

Более подробная информация о String.fromCharCode доступна здесь:

fromCharCode - MDC Doc Center

Более подробная информация о кодах символов для различных кодировок доступна здесь:

Кодировка Windows-1252
UTF-8 кодировка

7 голосов
/ 08 марта 2011

Помните, что .text() убирает разметку, поэтому я не думаю, что вы найдете   в результате без разметки.

Сделано в ответ ....

var p = $('<p>').html('&nbsp;');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
    alert('Character 160');

Показывает предупреждение, так как вместо него возвращается эквивалент ASCII разметки.

2 голосов
/ 08 марта 2011

Этот объект преобразуется в символ, который он представляет, когда браузер отображает страницу. JS (jQuery) читает визуализированную страницу, поэтому она не встретит такой текстовой последовательности. Единственный способ, с которым это может столкнуться, - это если вы дважды кодируете сущности.

1 голос
/ 08 марта 2011

Документация jQuery для text() говорит

Из-за различий в парсерах HTML в разных браузерах текст возвращенные могут варьироваться в новых строках и другой пробел.

Я бы использовал $td.html() вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...