Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Помогите с ява-скриптом
цитата
13/01/09 в 19:06
 ibiz
есть яваскрипт, вставляет переменную в поле textarea

var text='bla bla ] bla'
document.getElementById('txt').value += text + '\n';

в поле textarea вставляется текст 'bla bla ] bla'

как вставить нормальный текст, вида 'bla bla ] bla', тоесть нужно заменять все спецсимволы "&#...;" налету???
цитата
13/01/09 в 19:22
 Some Milk
Встроенных функций нет, но можно сделать свою, заменяя по регексам на символы с соответствующими кодами. Вроде такого (навскидку):

Код:

String.prototype.entitiesToStr = function()
{
    return this.replace(/&#(\d+);?/gi,
        function(match, p1, offset, s)
        {
            return String.fromCharCode(p1);
        }
    );
}


А, ну и пользоваться потом типа:

Код:
text = text.entitiesToStr()
цитата
15/01/09 в 19:29
 flying
Учитывая что html entities бывают не только цифровыми, но также именованными и шестнадцатиричными - логично предоставить браузеру самому разбираться с этими тонкостями. Сделать это проще всего использовав element.innerHTML и заставив браузер преобразовывать строку самостоятельно в соответствии со всеми правилами парсинга HTML. Немного модифицированный вариант:

Код:
<html>
<body>
<textarea id="ta" style="width: 200px; height: 100px"></textarea>
<script language="JavaScript">
var str = 'bla &#93; bla &#x53; &quot; bla &mdash; bla';
String.prototype.entitiesToStr = function()
{
    if (typeof(___ets)=='undefined')
        ___ets = document.createElement('div');
    var v = this.replace(/&apos;/g,'&#39;');        // MSIE 6 incorrectly converts &apos; entity
    ___ets.innerHTML = v;
    return ___ets.innerHTML;
}

document.getElementById('ta').value = str.entitiesToStr();
</script>
</body>
</html>


К сожалению &amp; &lt; и &gt; ни в одном браузере нормально не конвертятся в символы...


Эта страница в полной версии