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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> innerText в Гекко с переносами строк 
V
    Опции темы
Burrr
Дата 9.10.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



Нужен был код, для показа innerHTML и innerText узлов, накидал такую штуку:
Код
<body>
<div id="container">First string<br>Second string<br>Third string<br></div>
<script type="text/javascript">
var container = document.getElementById("container");
var text, html;
if (container.innerText) {
    text = container.innerText;
    html = container.innerHTML;
} else {
    text = document.createRange();
    text.selectNodeContents(container);
    text = text.toString();
    html = container.innerHTML;
}
alert("Text: ==============\n" + text + "\nHTML: ====================\n" + html);
</script>
</body>


HTML-код везде показывается правильно, а вот с innerText проблема. В ИЕ всё показывается правильно:
Код
First string
Second string
Third string

, а вот в Файрфоксе (и Гекко в целом) переносы строк съедаются и осображается вот такая строка:
Код
First stringSecond stringThird string


Помогите решить проблему! Как её побороть в целом, есть ли такие методы в Гекко, которые не съедают переносы строк?
Заменой пользоваться сложно, т.к. вместо <br> могут стоять <br/> и <p></p>
 smile 


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


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



если я правильно понимаю, вторая ветка в if - это как раз для Геко, который не понимает innerText, да? Если так, то по логике работы все зависит от того, как происходит перевод  для "<br>" вызов toString(). А он, как мне кажется, возвращает не "\n", a "". Потому без допонительных функций тут не обойтись.
А зачем вообще получать innerText?
PM MAIL   Вверх
Burrr
Дата 9.10.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



skyboy, ты правильно понял проблему, но возможно есть способ не только через range -> selectNodeContents -> toString(), а еще какой-то. Очень нужно!

Цитата
А зачем вообще получать innerText?

Нужно, в рамках подзадачи более крупного проекта.

Это сообщение отредактировал(а) Burrr - 9.10.2006, 15:13


--------------------
PM MAIL ICQ   Вверх
Zeroglif
Дата 9.10.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 28
Всего: 66



Цитата(Burrr @  9.10.2006,  14:35 Найти цитируемый пост)
Помогите решить проблему

В принципе, если среда стабильная/безопасная можно бы и регулярное написать под возможные варианты. 

Ну, или так:

Код

    text = 
        function (n) {
            for (var t = [], l = (c = n.childNodes).length, p, i = 0; i < l; i++) {
               t[t.length] = 
                   'p' == (p = c[i].nodeName.toLowerCase()) 
                       ? '\n' + c[i].textContent + '\n' 
                       : 'br' == p
                           ? '\n'
                           : c[i].textContent;
            } 
            return t.join(''); 
        }(container);


PM MAIL WWW   Вверх
Burrr
Дата 10.10.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



Zeroglif, спасибо!
+1


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


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А разве просто textContent не возвращает \n для <br>'а?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Burrr
Дата 11.10.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



Цитата
А разве просто textContent не возвращает \n для <br>'а?

К сожалению.


Это сообщение отредактировал(а) Burrr - 11.10.2006, 15:39


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


 




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


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

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