Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавить к <div> текст, содержащий юникод, только с помощью innerHTML ? :/ 
V
    Опции темы
Michael.de
Дата 14.4.2009, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: 2
Всего: 9



Всем привет smile

Привожу пример:
Код

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<style type='text/css'>div {position:absolute;top:100px;left:100px;border:1px solid #00A}</style>
<script type='text/javascript'>
function init(){
 var arr=["1087", "1086", "1095", "1077", "1084", "1091"];
 var txt="";
 for (var i=0;i<arr.length;i++) txt+="&#"+arr[i]+";";
 var d=document.createElement('div');
 document.body.appendChild(d);
 // problem is here:
 //d.appendChild(document.createTextNode(txt));
 //document.all ? d.innerText=txt : d.textContent=txt;
 d.innerHTML=txt;
}
</script>
</head>
<body onload='init();'>
</body>
</html>

Если присоединяемый текст не содержал бы unicode, добавить его можно было бы любым из 3 способов (строки 14, 15 или 16). С unicode у меня получается только с помощью innerHTML, что не комильфо smile
Вопрос: если ещё какие-нибудь способы? smile или у меня "очепятки"?

P.S. строки 8-10 образовались только из-за того, что движок Форума тут же переводит юникод (&#1087; и т.д.) в текст smile

Это сообщение отредактировал(а) Michael.de - 14.4.2009, 02:42
PM MAIL   Вверх
ksnk
Дата 14.4.2009, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



А почему innerHTML - не комильфо? Его, конечно, некоторые фанатики из w3c не любили, но оно уже реабилитировано и даже включено в проект следующего стандарта HTML 5.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
IDVsbruck
Дата 14.4.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Посмотрел в исходнике jQuery - они функцию html(value) реализовывают через appendChild() и у них точно не возникает проблем с юникодом.
PM MAIL   Вверх
Michael.de
Дата 14.4.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: 2
Всего: 9



ksnk, просто столько ушатов грязи было на innerHTML вылито, что хотелось бы всё через DOM реализовать smile
IDVsbruck, я скачал последнюю версию (~117 KByte), но не могу там найти этот кусок кода... ты не мог бы привести тут листинг этой ф-ции (хотя бы одну строку - дальше я с пом.  Ctrl+F найду) smile
PM MAIL   Вверх
IDVsbruck
Дата 14.4.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Отработка html:
Код
html: function( value ) {return value === undefined ? (this[0] ? this[0].innerHTML : null) : this.empty().append( value );}

Отработка append:
Код
append: function() {return this.domManip(arguments, true, function(elem){if (this.nodeType == 1) this.appendChild( elem );});}


Правда, не смотрел работу с кодировками, возможно, "где-то что-то есть", но код есть код ...


PM MAIL   Вверх
ksnk
Дата 14.4.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



IDVsbruck, Не все так просто ;) этот самый appendChild получает совсем даже не текстовую строку, а то, во что превратит эту строку оператор $, если я правильно усмотрел смысл операции domManip


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Michael.de
Дата 14.4.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: 2
Всего: 9



Народ, я вам голову морочил, сорри smile

это не юникод: var txt='&#1087;&#1086;&#1095;&#1077;&#1084;&#1091;';
а вот это - он: var txt='\u043F\u043E\u0447\u0435\u043C\u0443';
В первом случае у меня получилось только с innerHTML, а во втором - работают все три варианта.
P.S. Обязуюсь в дальнейшем больше... спать smile

Это сообщение отредактировал(а) Michael.de - 14.4.2009, 19:57
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.