Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   firefox(16-) Многострочный комментарий в функции и методы toString(),toSource() (https://javascript.ru/forum/css-html-firefox-mizilla/41221-firefox-16-mnogostrochnyjj-kommentarijj-v-funkcii-i-metody-tostring-tosource.html)

p3ps 04.09.2013 16:48

firefox(16-) Многострочный комментарий в функции и методы toString(),toSource()
 
В функцию comm передается некая информация от сервера. Далее функция comm преобразуется в строку с помощью toString или toSource и легко обрабатывается на уровне js без ошибок, но в браузерах firefox ниже 16 версии преобразование в строку удаляет комментарии и содержимое.
Ниже привожу небольшой пример кода, который съедает комментарии.
function comm()
{
/* 
Любая информация в виде html+js без экранизации спец символов и с переносами строк.
<html>
....
</html>
*/
}
var fstring = comm.toString(); 
alert(fstring);


Кто-нибудь сталкивался с таким способом передачи информации?
Не интересует реализация на стороне сервера.

danik.js 04.09.2013 16:49

А к чему это извращение, пояснить можешь?

p3ps 04.09.2013 17:03

Нужно обработать информацию от сервера на уровне javascript.
Нет возможности поменять что-то на сервере.
Вставка информации в js-код производится с помощью API параметра, например, через %param.
Единственный вариант избежать js ошибки - обернуть в многострочный коммент /*%param*/

p3ps 04.09.2013 17:10

Для полной картины .
Есть страница где установлен тег script с src=запрос на сервер.
Сервер возвращает js шаблон, в котором %param заменяется html+js кодом.
Собственно нужно на клиентском уровне обработать эту информацию.
Вопрос не в том как обработать, а как пофиксить съедание комментариев при использовании метода toString или toSource в браузерах firefox ниже 16 версии

p3ps 04.09.2013 19:01

Не вариант. На странице стоит тег script. Я не могу в script вернуть html.
Цитата:

Сообщение от Дзен-трансгуманист
Хотя, да, передавать данные через комментарии это звиздец.

Еще какой ;)

p3ps 05.09.2013 07:51

Не выходит. ff не записывает комментарии:cray:
function simpl()
{
/* invisible */
}
var s = document.createElement('script');
     s.text = simpl;
     document.getElementsByTagName('body')[0].appendChild(s);

На странице вижу скрипт:
<script>
function simpl() {
}
</script>

p3ps 05.09.2013 07:58

innrtHTML тоже не пройдет так как он использует строку.
То есть при подмене сервером '%param' превратится в
'<tag>...</tag>
<tag>...</tag>
<tag>...</tag>'
Получится ошибка js, а если использую DOM то режется комментарий.

p3ps 05.09.2013 08:42

В общем решил исключить html из %param и убрал /**/

Deff 05.09.2013 16:44

Интересна инфа о статистике пользователей с версией ниже 16...
09 окт. 2012 г Вышел Firefox 16
Если только чел год в сети не был, актуально наверно для части заполярных мормонов и сидельцев в гулаге

p3ps 06.09.2013 16:00

//Интересна инфа о статистике пользователей с версией ниже 16..
Цифра хорошая, тем более если сложить все версии до 16.

//Если только чел год в сети не был, актуально наверно для части заполярных мормонов и сидельцев в гулаге

Чтож, видимо вы не работали в компаниях где стоит какой-нибудь прокси и недоступны функции администратора на компьютере.
Также, хочу заметить, что ранее автоматическое обновление отключалось или было отключено по умолчанию в пиратских дистрибутивах.

//Дзен-трансгуманист
В том то и дело, что сервер этого не делает. Ждать фикса не было времени. Вот и думал как можно вывалить в тег <script> html-код, чтоб браузер не ругался. Просить пользователей ПО экранировать что-то и убирать переносы - не гуд. В общем решил просто запретить использовать html теги в данном случае.


Часовой пояс GMT +3, время: 15:38.