HTML-сущности и javascript

12
BG
На сайте с 09.10.2010
Offline
3
3907

Всем здравствуйте!

Хочется разобраться в таком вопросе.

Задача:

Есть фрагмент данных в HTML, полученный с помощью XMLHttpRequest. В html-коде встречаются html-сущности вида '"', при присвоении свойству contentDocument.body.innerHTML объекта iframe этого фрагмента данных в качестве значения некоторые html-сущности автоматически преобразуются в эквивалентные им специальные символы. Например, на входе было '«Some Text«', а на выходе получаем: «Some Text». А нужно, чтобы html-сущности в ходе этой, казалось бы, простой операции таковыми бы и оставались.

Покурив мануалы и документацию по javascript, выяснил, что при присвоении значения свойству innerHTML браузер осуществляет стандартную обработку HTML-кода перед выводом на экран. Именно поэтому html-сущности и преобразуются. Поиск в Google по нашим и буржуйнетам ничего не дал. Проблема есть, у нее определенно есть решение, но четкого описания я найти не смог. Кто-нибудь может предложить решение проблемы?

[Удален]
#1
ДП
На сайте с 23.11.2009
Offline
203
#2

А простой replace('&','&') не подойдет?

Если честно - то не помню, все ли сущности с амперсанда начинаются.

BG
На сайте с 09.10.2010
Offline
3
#3

Нет, innerText - это другое. Это свойство в данном случае не подойдет. Мне нужно не текст вставить между тегами, а фрагмент HTML-кода.

Boeses_Genie добавил 26.01.2011 в 21:17

Дикий пионер:
А простой replace('&','&') не подойдет?
Если честно - то не помню, все ли сущности с амперсанда начинаются.

Все начинаются с амперсанда. Но это тоже не подойдет. Подумайте, какой вывод тогда будет, что-то типа:

«Some Text. Ведь оставшуюся часть кода HTML-сущности мы не заменяем, а только амперсанд, поэтому она интерпретируется браузером как простой текст.

ДП
На сайте с 23.11.2009
Offline
203
#4

Пардон, тогда видимо не так задачу понял

BG
На сайте с 09.10.2010
Offline
3
#5
Дикий пионер:
Пардон, тогда видимо не так задачу понял

Задача в том, чтобы при вставке фрагмента html-кода во фрейм сохранить все html-сущности в неизменном виде.

n0name
На сайте с 22.12.2006
Offline
54
#6

Вам нужно, чтобы в коде страницы было &, а в браузере выводилось & или нужно, чтобы в коде было & и в браузере выводилось &?

Если первый вариант, то эти сущности ими же и остаются в некоторых браузерах (Файерфокс). В других же это никак не изменить.

Если второй вариант, то решение Пионера вполне подойдет. Только для замены по всем тексту, лучше использовать регулярные выражения: str.replace(/&/g, '&')

Сервис сравнения цена на VPS (http://vpska.com/)
BG
На сайте с 09.10.2010
Offline
3
#7

Может быть, кто-нибудь подскажет решение? Суть в том, чтобы при присвоении значения value для textarea, выдернутого из фрагмента документа, сохранялись html-сущности. Дело в том, что в WYSIWYG'ах в различных CMS (WP, Joomla!, к примеру) при переключении режима text/html html-сущности перекодируются в спецсимволы. Можно добиться, чтобы этого не происходило, см., например, CKEditor или то же в 1С Битриксе. Мне интересно понять, как это реализовано.

n0name
На сайте с 22.12.2006
Offline
54
#8

http://dl.dropbox.com/u/411947/entities.html

Те символы, которые не преобразовались обратно в мнемоники, придется вручную заменять. По-другому никак.

[Удален]
#9

подменить « на «

n0name
На сайте с 22.12.2006
Offline
54
#10
MOP1:
подменить « на «

Посмотрите еще раз внимательно мой пример по ссылке. Некоторые сущности возвращаются не в виде мнемоник, а в виде символов. Один из них как раз и есть «

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий