Транслит средствами JS. Пример из жизни

Решение, позволяющее тем, кто в силу тех или иных причин вынужден писать транслитом, быстро перевести написанное в нормальный русский текст.

Для начала - скрипт, выполняющий преобразование.



Код не мой, взят отсюда, я только чуть переделал его с учётом поставленной задачи (написать что-то своё на то время просто не было возможности). Вся суть заключается в использовании ассоциативных массивов(хэшей) в качестве "словарей" - каждой английской букве/буквосочетанию ставится в соответствие буква русская. При загрузке скрипта алгоритм транслитерации будет автоматически применён к первому элементу textarea на странице.

Теперь размещаем скрипт где-нибудь на общедоступном сервере, а затем создаём ссылку-букмарклет вот такого содержания:

<a href='javascript:(function(){var js = document.createElement("script");js.src = "http://some.server.com/trans.js";
with(document.getElementsByTagName("head")[0]){appendChild(js);removeChild(js);appendChild(js)}}());'>Translate</a>

Если "развернуть" код букмарклета, то получим

(function(){
	var js = document.createElement("script");
	js.src = "http://some.server.com/trans.js";
	with(document.getElementsByTagName("head")[0]){
		appendChild(js);
		removeChild(js);
		appendChild(js)
	}
}());

Тут всё довольно просто: создаём тег "script", связываем его с адресом, по которому находится наш скрипт, и добавляем его в head, что автоматически загрузит и выполнит код скрипта.последние 4 строчки

with(document.getElementsByTagName("head")[0]){
	appendChild(js);
	removeChild(js);
	appendChild(js)
}

служат для того, чтобы скрипт можно было применять многократно, не обновляя страницу, т.к. если скрипт уже был загружен, то после одиночного вызова метода appendChild ничего не произойдёт (в некоторых браузерах может и сработать, но тогда из-за повторного объявлеиня переменных возникнет ошибка). Поэтому мы сначала добавляем скрипт, затем удаляем методом removeChild (на случай, если он уже был загружен ранее) и снова вызываем appendChild, который на этот раз уже точно сработает.Теперь добавляем вышеописанное "чудо" (то есть ссылку с кодом) в закладки, идём на страницу, на которой мы, собственно, собирались что-то писать транслитом (форма ответа на этом форуме отлично подойдёт для тестирования ;) ), вводим текст в поле ответа и кликаем по нашей закладке...Ну и "живой" пример (использовать ссылку "Translate (add me to your bookmarks)" внизу страницы).

Следующая запись

Предыдущая запись

Похожие записи

Комментарии

Еще нет комментариев.

Пингбэки

Оповещения открыты.

Трэкбэки

URL архива

Only authorized users can post comments