2015-05-03 3 views
-1

У меня проблема - не удается определить, какой символ eol используется на странице.Конец строки в JavaScript

Например, сервер отправить эти данные:

<?php 
header('Content-Type: text/plain; charset=UTF-8'); 
echo "1\r2"; 

Теперь я пытаюсь обнаружить EOL (\ г == 13):

document.body.textContent.charCodeAt(1); 

Но JS возвращение 10 вместо 13. Если попытаться использовать другие специальные char затем JS возвращает правильный код char.

Как я могу получить исходные данные страницы без каких-либо изменений, если я не могу обнаружить eol на сервере, скрипт из потока, и я не могу использовать XMLHTTPRequest?

+0

* "... если я ничего не могу изменить на сервере" * Вы имеете в виду вы не можете изменить Код PHP, который вы указали? –

+0

Подождите ... вы возвращаете открытый текст и говорите, что не можете использовать 'XMLHttpRequest', так как бы вы запускали JavaScript для работы с этим ответом? «Iframe»? –

+0

Да, я не могу изменить скрипт php. – eolusr

ответ

0

Даже если вы отправляете текст как text/plain, большинство браузеров по-прежнему будут отображать HTML-документ. В противном случае вы не могли бы сделать document.body, потому что не было бы body.

И затем, от §8.2.2.5 Preprocessing the input stream,

"CR" символы (U + 000D) и "LF" (U + 000A) символы рассматриваются специально. Все символы CR должны быть преобразованы в символы LF, а любые символы LF, которые сразу следуют за символом CR, должны быть игнорируются. Таким образом, строки новой строки в HTML DOM представлены символами LF, , и на входе на этапе tokenization никогда не присутствуют символы CR.

Так что это невозможно.

+0

За исключением того, что обычный текст не является HTML. –

+0

Могу ли я отключить нормализацию/визуализацию и получить данные любым другим способом? – eolusr

+0

@eolusr С XMLHttpRequest не было бы предварительной обработки, чтобы она работала. – Oriol

1

Если вы не можете изменить PHP и у вас есть, чтобы полагаться на получение текста с document.body.textContent, вы не можете полагаться на окончание строк, которые не изменяются. Браузеры отображают содержимое, нормализующее пробелы; к тому времени, как вы достигнете document.body.textContent, этот текст не является буквальным текстом, отправленным вашим сервером, его обрабатывают для создания документа DOM, а затем ваш доступ к textContent получает строчную версию этого документа DOM. Окончание линий вполне может быть нормализовано и почти наверняка будет be.

У вас будет , чтобы что-то изменить на сервере или использовать XMLHttpRequest, иначе вы не сможете этого сделать.


Ваш комментарий:

Ok - я могу изменить PHP скрипт, но не может обнаружить EOL на сервере.

Ну, это совсем другое, то:

<?php 
header('Content-Type: text/plain; charset=UTF-8'); 
echo json_encode("1\r2"); 
?> 

и

JSON.parse(document.body.textContent).charCodeAt(1) // 13 
+0

Могу ли я получить исходные данные с помощью некоторых других методов? – eolusr

+0

@eolusr: На ум приходит ничего, кроме XHR, нет. XHR будет работать. –

+0

Хорошо - я могу изменить скрипт php, но не могу обнаружить eol на сервере. Это помощь? – eolusr

Смежные вопросы