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("<#1041;");}
...
if (ch == "я"){document.write("<1103;");}
}
}
По поводу его работы у меня возникают некоторые вопросы:
1. Как сделать, чтобы можно было обрабатывать не просто строку, а целиком текст?
2. Как установить этот скрипт на нажатие кнопки?
3. Как сделать, чтобы обрабатывался текст, который я вставлю в <textarea> непосредственно на странице?
Я пробовал сделать это так:
// Выполнение при нажатии кнопки
function textit()
{
document.write("<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><title>" + tit + "</title></head><body><form method=get action=/cgi-bin/proba><center><table><tr><td><textarea cols='100' rows='40'><script>recode('" + document.form.textarea + "');</script></textarea></td></tr></table><table width='100'><tr><td><input type='button' value='Перевести' onClick='textit();' size=2></td></tr></table></center></form></body></html>");
}
Но понял, что таким образом я не добьюсь желаемого результата, потому что функция обрабатывается так:
<script>
recode('Строка 1');
recode('Строка 2');
recode('Строка 3');
</script>
То есть при явном указании обрабатываемого текста!!!
|
|
26.01.2009, 17:56
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
1. Бессмысленный вопрос.
2. Скрипт придется переписать, потому что сейчас, с использованием document.write, вы не сможете установить его, как обработчик. Потому что после полной загрузки страницы, вызов document.write перезаписывает весь вывод страницы.
3. С этим есть сложности, потому что не все браузеры поддерживают такое специфическое событие, ведь вставить можно не только комбинацией ctrl+v, которую можно отловить, но и через контекстное меню.
И, кроме всего прочего, чего вы хотите добиться этим скриптом? Ведь введенный в textarea текст будет отображаться в той кодировке, в который отображается страница, а вставленные через JavaScript спец символы, вроде &#xxxx;, будут отображаться текстовой записью, а не символом другой кодировки. Может ваша проблема имеет более подходящие решения, например серверными силами?
|
|
26.01.2009, 18:53
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Андрей Параничев
|
Ведь введенный в textarea текст будет отображаться в той кодировке, в который отображается страница
|
Всегда в юникоде будут.
|
|
27.01.2009, 06:31
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
2. нужно вместо document.write использовать конкатенацию строк(+), а результат вставлять куда надо. А обработчик назначить через атрибут onclick кнопки либо после загрузки документа
3. получить доступ к содержимому textarea можно следующим образом: document.getElementById('textAreaId').value
|
|
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 и т. д.) не может понять эту белиберду. Можете сами попробовать мне бы хотелось привести этот текст в читабельный вид!
|
|
27.01.2009, 08:02
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
а javascript при чем? Штирлиц в студию
а что за текст? А то только часть удалось прочитать ;-)
|
|
28.01.2009, 17:22
|
Новичок на форуме
|
|
Регистрация: 26.01.2009
Сообщений: 4
|
|
Сообщение от x-yuri
|
а javascript при чем? Штирлиц в студию
а что за текст? А то только часть удалось прочитать ;-)
|
Просто мне хотелось бы довести до ума свою задумку и получше узнать что такое JavaScript.
Я только не совсем понял, где именно вставлять document.getElementById('textAreaId').value и как с ним работать.
А за Штирлица спасибо, пригодится в хозяйстве
Кстати, текст я из бинарника вынул
Если заинтересовало, могу весь файл дать
|
|
28.01.2009, 17:43
|
|
|
|
Регистрация: 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
а вообще почитай статьи
|
|
29.01.2009, 13:30
|
Новичок на форуме
|
|
Регистрация: 26.01.2009
Сообщений: 4
|
|
Одно дело прочитать статью и совсем другое - что-то из нее понять. Я перечитал уже все учебники, какие смог найти. Но обычно там все ограничивается:
document.open();
document.write('Hello, world!');
document.close();
или еще проще:
alert("Hello, world!")
Проще написать собственный скриптовый язык, состоящий из набора русских слов
|
|
29.01.2009, 15:45
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Объясните мне, чем вам поможет код из первого сообщения (где нормальные буквы заменяются на символы unicode-последовательности) в перекодировке неизвестного текста, который весь в закорючках?
|
|
|
|