Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.01.2009, 16:50
Новичок на форуме
Отправить личное сообщение для Стихотворец Посмотреть профиль Найти все сообщения от Стихотворец
 
Регистрация: 26.01.2009
Сообщений: 4

Перекодировка текста
У меня примерно такой скрипт...
// Функция перекодировки текста
function recode(str)
{
	// Определение длины строки
	len = str.length;
	for (ich=0; ich <= len-1; ich++)
	{
		ch = str.substr(ich,1);
		// Определение замен
		if (ch == "А"){document.write("&lt;#1041;");}
		...
		if (ch == "я"){document.write("&lt;1103;");}
	}
}

По поводу его работы у меня возникают некоторые вопросы:
1. Как сделать, чтобы можно было обрабатывать не просто строку, а целиком текст?
2. Как установить этот скрипт на нажатие кнопки?
3. Как сделать, чтобы обрабатывался текст, который я вставлю в <textarea> непосредственно на странице?
Я пробовал сделать это так:
// Выполнение при нажатии кнопки
function textit()
{
	document.write("&lt;html>&lt;head>&lt;meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>&lt;title>" + tit + "&lt;/title>&lt;/head>&lt;body>&lt;form method=get action=/cgi-bin/proba>&lt;center>&lt;table>&lt;tr>&lt;td>&lt;textarea cols='100' rows='40'>&lt;script>recode('" + document.form.textarea + "');&lt;/script>&lt;/textarea>&lt;/td>&lt;/tr>&lt;/table>&lt;table width='100'>&lt;tr>&lt;td>&lt;input type='button' value='Перевести' onClick='textit();' size=2>&lt;/td>&lt;/tr>&lt;/table>&lt;/center>&lt;/form>&lt;/body>&lt;/html>");
}

Но понял, что таким образом я не добьюсь желаемого результата, потому что функция обрабатывается так:
<script>
	recode('Строка 1');
	recode('Строка 2');
	recode('Строка 3');
</script>

То есть при явном указании обрабатываемого текста!!!
Ответить с цитированием
  #2 (permalink)  
Старый 26.01.2009, 17:56
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

1. Бессмысленный вопрос.
2. Скрипт придется переписать, потому что сейчас, с использованием document.write, вы не сможете установить его, как обработчик. Потому что после полной загрузки страницы, вызов document.write перезаписывает весь вывод страницы.
3. С этим есть сложности, потому что не все браузеры поддерживают такое специфическое событие, ведь вставить можно не только комбинацией ctrl+v, которую можно отловить, но и через контекстное меню.

И, кроме всего прочего, чего вы хотите добиться этим скриптом? Ведь введенный в textarea текст будет отображаться в той кодировке, в который отображается страница, а вставленные через JavaScript спец символы, вроде &#xxxx;, будут отображаться текстовой записью, а не символом другой кодировки. Может ваша проблема имеет более подходящие решения, например серверными силами?
Ответить с цитированием
  #3 (permalink)  
Старый 26.01.2009, 18:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Андрей Параничев
Ведь введенный в textarea текст будет отображаться в той кодировке, в который отображается страница
Всегда в юникоде будут.
Ответить с цитированием
  #4 (permalink)  
Старый 27.01.2009, 06:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

2. нужно вместо document.write использовать конкатенацию строк(+), а результат вставлять куда надо. А обработчик назначить через атрибут onclick кнопки либо после загрузки документа
3. получить доступ к содержимому textarea можно следующим образом: document.getElementById('textAreaId').value
Ответить с цитированием
  #5 (permalink)  
Старый 27.01.2009, 07:56
Новичок на форуме
Отправить личное сообщение для Стихотворец Посмотреть профиль Найти все сообщения от Стихотворец
 
Регистрация: 26.01.2009
Сообщений: 4

Сообщение от Андрей Параничев Посмотреть сообщение
1. Бессмысленный вопрос.
2. Скрипт придется переписать, потому что сейчас, с использованием document.write, вы не сможете установить его, как обработчик. Потому что после полной загрузки страницы, вызов document.write перезаписывает весь вывод страницы.
3. С этим есть сложности, потому что не все браузеры поддерживают такое специфическое событие, ведь вставить можно не только комбинацией ctrl+v, которую можно отловить, но и через контекстное меню.

И, кроме всего прочего, чего вы хотите добиться этим скриптом? Ведь введенный в textarea текст будет отображаться в той кодировке, в который отображается страница, а вставленные через JavaScript спец символы, вроде &#xxxx;, будут отображаться текстовой записью, а не символом другой кодировки. Может ваша проблема имеет более подходящие решения, например серверными силами?
А можно поподробнее? Дело в том что имеется текст примерно следующего содержания:
—І® ¦Ґ ў»шҐ ў±Ґг® ­  ±ўҐтҐ?‹ѕЎ®ўј?’®«јЄ® Ј®р»! :
)- - - - - - - - - - -‚ —Ђ’› Ќ… ‡‚Ђ’њ!†€‡Ќ€ € „…Ќњѓ€ Ќ… Љ‹џЌ—€’њ!‚‘…
ђЂ‚ЌЋ Ќ… „ЂЊ!ЉЌЋЏЋ—Ќ›Њ ‘…Љ‘ЋЊ Ќ… ‡ЂЌ€ЊЂћ‘њ!
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~—І® ІҐбҐ Ї®д рЁІј?Њ®¦ҐІ ІҐµ ¦ір ўлҐ©?—І®
і­®сїІ ­  ѕЈЏҐ±нЁ °і±±кЁµ Ї®лҐ©?Њ®¦ҐІ ±ЁнЁ© Іім ­?Њ®¦ҐІ їЎл®нЁ ¶ўҐІ
?„«ї ¬Ґнї ­ЁчҐг® ­Ґв®§м®¦н®г® ­ҐІ!—І® ІҐбҐ Ї®д рЁІј,—Ґ«®вҐЄ ¬®©
¤®р®г®©?Љ Є ±і¤јЎі Ў« г®д рЁІј,—І® ±ўҐл  ¬Ґнї ± І®б®©?
„«ї ¬Ґнї ­ЁчҐг® ­Ґв®§м®¦н®г® ­ҐІ!!!  t  „ «јёҐ. аЏ®®Ўщ Іј±ї.

Ни один браузер (IE, Mozilla, Opera и т. д.) не может понять эту белиберду. Можете сами попробовать мне бы хотелось привести этот текст в читабельный вид!
Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2009, 08:02
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а javascript при чем? Штирлиц в студию
а что за текст? А то только часть удалось прочитать ;-)
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2009, 17:22
Новичок на форуме
Отправить личное сообщение для Стихотворец Посмотреть профиль Найти все сообщения от Стихотворец
 
Регистрация: 26.01.2009
Сообщений: 4

Сообщение от x-yuri Посмотреть сообщение
а javascript при чем? Штирлиц в студию
а что за текст? А то только часть удалось прочитать ;-)
Просто мне хотелось бы довести до ума свою задумку и получше узнать что такое JavaScript.
Я только не совсем понял, где именно вставлять document.getElementById('textAreaId').value и как с ним работать.

А за Штирлица спасибо, пригодится в хозяйстве

Кстати, текст я из бинарника вынул
Если заинтересовало, могу весь файл дать
Ответить с цитированием
  #8 (permalink)  
Старый 28.01.2009, 17:43
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Если заинтересовало, могу весь файл дать
да не, это я так

Цитата:
Просто мне хотелось бы довести до ума свою задумку и получше узнать что такое JavaScript.
Я только не совсем понял, где именно вставлять document.getElementById('textAreaId').value и как с ним работать.
var a = document.getElementById('textAreaId').value;

записывает в a содержимое textarea (textAreaId - id элемента textarea)
document.getElementById('textAreaId').value = 'текст';

изменяет содержимое textarea
а вообще почитай статьи
Ответить с цитированием
  #9 (permalink)  
Старый 29.01.2009, 13:30
Новичок на форуме
Отправить личное сообщение для Стихотворец Посмотреть профиль Найти все сообщения от Стихотворец
 
Регистрация: 26.01.2009
Сообщений: 4

Одно дело прочитать статью и совсем другое - что-то из нее понять. Я перечитал уже все учебники, какие смог найти. Но обычно там все ограничивается:
document.open();
document.write('Hello, world!');
document.close();


или еще проще:

alert("Hello, world!")


Проще написать собственный скриптовый язык, состоящий из набора русских слов
Ответить с цитированием
  #10 (permalink)  
Старый 29.01.2009, 15:45
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Объясните мне, чем вам поможет код из первого сообщения (где нормальные буквы заменяются на символы unicode-последовательности) в перекодировке неизвестного текста, который весь в закорючках?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оборачивание текста в теги <b>, <i> и т.д. bizmak Элементы интерфейса 4 23.01.2009 05:01
Изменение текста слоя по изменениям в текстовом поле Воитель Общие вопросы Javascript 4 21.10.2008 11:03
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55
Firefox: перехватить соббытие при перетаскивании текста no_alex Общие вопросы Javascript 9 21.08.2008 18:02
вывод нужного текста в текстовом поле при нажатии на кнопку! fifo4ka Общие вопросы Javascript 7 06.05.2008 13:36