Участник:Ole Førsten/qwerty2.js
Перейти к навигации
Перейти к поиску
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
//Транслитерация выделенного текста из клавиатуры ЙЦУКЕН в клавиатуру QWERTY. //Основной код взят из http://ru.wikipedia.org/wiki/Участник:X-romix/translit.js //Автор: Ole Førsten var OleFørsten_Qwerty_CantWork = 'Транслит не может работать в вашем браузере.\n\nTranslit cannot work in your browser' // английский текст для тех, кто не видит русские буквы var OleFørsten_Qwerty_FullText = 'Эта кнопка предназначена для транслитерации текста из клавиатуры ЙЦУКЕН в клавиатуру QWERTY.'; //Добавляет кнопку function addQwertyButton(){ var toolbar = document.getElementById('toolbar') var textbox = document.getElementById('wpTextbox1') if (!textbox || !toolbar) return var i = document.createElement('img') i.src = 'http://data.cyclowiki.org/images/d/d5/QWERTY-button2.png' i.alt = i.title = 'Qwerty' i.onclick = OleFørsten_Qwerty i.style.cursor = 'pointer' toolbar.appendChild(i) } //Этот код выполняется в начале. if (wgAction == 'edit' || wgAction == 'submit'){ addOnloadHook(addQwertyButton) } //Функция для оформления таблицы function OleFørsten_Qwerty(){ //Проверяем, поддерживает ли браузер регулярные выражения (RegExp) if (('code'.replace(/d/g, 'r') != 'core') || (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5)) { alert(OleFørsten_Qwerty_CantWork); return } var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1 var winScroll = document.documentElement.scrollTop //remember window scroll wpTextbox1.focus() if (typeof wpTextbox1.selectionStart != 'undefined' && (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3 var textScroll = wpTextbox1.scrollTop var startPos = wpTextbox1.selectionStart var endPos = wpTextbox1.selectionEnd txt = wpTextbox1.value.substring(startPos, endPos) if (txt == '') {alert(OleFørsten_Qwerty_FullText); ShowHelp(); return} else{ processText() wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos) } wpTextbox1.selectionStart = startPos wpTextbox1.selectionEnd = startPos + txt.length wpTextbox1.scrollTop = textScroll }else if (document.selection && document.selection.createRange) { //IE //alert("IE"); var range = document.selection.createRange() txt = range.text if (txt == '') {alert(OleFørsten_Qwerty_FullText); ShowHelp(); return} else{ processText() range.text = txt //if (!window.opera) txt = txt.replace(/\r/g,'') if (range.moveStart) range.moveStart('character', - txt.length) range.select() } }else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку { alert(OleFørsten_Qwerty_CantWork); return } document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera //Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста function processText(){ //txt = txt.replace(/^\s+|\s+$/g, '') //Обрезаем пробелы слева и справа //txt = txt.replace(/\n/g, '\n|-\n| ') //Концы строк //q w e r t y u i o p [ ] a s d f g h j k l ; ' z x c v b n m , . / txt = txt.replace(/й/g, 'q'); txt = txt.replace(/ц/g, 'w'); txt = txt.replace(/у/g, 'e'); txt = txt.replace(/к/g, 'r'); txt = txt.replace(/е/g, 't'); txt = txt.replace(/н/g, 'y'); txt = txt.replace(/г/g, 'u'); txt = txt.replace(/ш/g, 'i'); txt = txt.replace(/щ/g, 'o'); txt = txt.replace(/з/g, 'p'); txt = txt.replace(/х/g, '['); txt = txt.replace(/ъ/g, ']'); txt = txt.replace(/Й/g, 'Q'); txt = txt.replace(/Ц/g, 'W'); txt = txt.replace(/У/g, 'E'); txt = txt.replace(/К/g, 'R'); txt = txt.replace(/Е/g, 'T'); txt = txt.replace(/Н/g, 'Y'); txt = txt.replace(/Г/g, 'U'); txt = txt.replace(/Ш/g, 'I'); txt = txt.replace(/Щ/g, 'O'); txt = txt.replace(/З/g, 'P'); txt = txt.replace(/Х/g, '{'); txt = txt.replace(/Ъ/g, '}'); txt = txt.replace(/ф/g, 'a'); txt = txt.replace(/ы/g, 's'); txt = txt.replace(/в/g, 'd'); txt = txt.replace(/а/g, 'f'); txt = txt.replace(/п/g, 'g'); txt = txt.replace(/р/g, 'h'); txt = txt.replace(/о/g, 'j'); txt = txt.replace(/л/g, 'k'); txt = txt.replace(/д/g, 'l'); txt = txt.replace(/ж/g, ';'); txt = txt.replace(/э/g, '’'); txt = txt.replace(/Ф/g, 'A'); txt = txt.replace(/Ы/g, 'S'); txt = txt.replace(/В/g, 'D'); txt = txt.replace(/А/g, 'F'); txt = txt.replace(/П/g, 'G'); txt = txt.replace(/Р/g, 'H'); txt = txt.replace(/О/g, 'J'); txt = txt.replace(/Л/g, 'K'); txt = txt.replace(/Д/g, 'L'); txt = txt.replace(/Ж/g, ':'); txt = txt.replace(/Э/g, '"'); txt = txt.replace(/я/g, 'z'); txt = txt.replace(/ч/g, 'x'); txt = txt.replace(/с/g, 'c'); txt = txt.replace(/м/g, 'v'); txt = txt.replace(/и/g, 'b'); txt = txt.replace(/т/g, 'n'); txt = txt.replace(/ь/g, 'm'); txt = txt.replace(/б/g, ','); txt = txt.replace(/ю/g, '.'); txt = txt.replace(/Я/g, 'Z'); txt = txt.replace(/Ч/g, 'X'); txt = txt.replace(/С/g, 'C'); txt = txt.replace(/М/g, 'V'); txt = txt.replace(/И/g, 'B'); txt = txt.replace(/Т/g, 'N'); txt = txt.replace(/Ь/g, 'M'); txt = txt.replace(/Б/g, '<'); txt = txt.replace(/Ю/g, '>'); txt = txt.replace(/,/g, '?'); txt = txt.replace(/ё/g, '`'); txt = txt.replace(/Ё/g, '~'); txt = txt.replace(/"/g, '@'); txt = txt.replace(/№/g, '#'); txt = txt.replace(/\;/g, '$;'); txt = txt.replace(/\:/g, '^'); txt = txt.replace(/\?/g, '&'); setWpSummary(); } function ShowHelp(){ var select, inputId, isEdit, maxChars = 250, useMWPreview if (wgAction == 'edit' || wgAction == 'submit'){ inputId = 'wpSummary' }else if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Movepage'){ inputId = 'wpReason' }else if (wgAction == 'protect'){ inputId = 'mwProtect-reason' }else return var hlp = document.getElementById("translit_help") if (hlp) return var input = document.getElementById(inputId) if (!input) return //create counter span var cnt = document.createElement('span') cnt.id = 'inputCounter' cnt.style.marginLeft = '3px' input.parentNode.insertBefore(cnt, input.nextSibling) cnt.innerHTML = '<table class="standard" id="translit_help">\ <tr>\ <th>Й<th>Ц<th>У<th>К<th>Е<th>Н<th>Г<th>Ш<th>Щ<th>З<th>Х<th>Ъ<th>Ф<th>Ы<th>В<th>А<th>П<th>Р<th>О<th>Л<th>Д<th>Ж<th>Э<th>Я<th>Ч<th>С<th>М<th>И<th>Т<th>Ь<th>Б<th>Ю<th>,<th>Ё<th>й<th>ц<th>у<th>к<th>е<th>н<th>г<th>ш<th>щ<th>з<th>х<th>ъ<th>ф<th>ы<th>в<th>а<th>п<th>р<th>о<th>л<th>д<th>ж<th>э<th>я<th>ч<th>с<th>м<th>и<th>т<th>ь<th>б<th>ю<th>.<th>ё<th>"<th>№<th>;<th>:<th>?\ </tr>\ <tr>\ <td>Q<td>W<td>E<td>R<td>T<td>Y<td>U<td>I<td>O<td>P<td>{<td>}<td>A<td>S<td>D<td>F<td>G<td>H<td>J<td>K<td>L<td>:<td>"<td>Z<td>X<td>C<td>V<td>B<td>N<td>M<td><<td>><td>?<td>~<td>q<td>w<td>e<td>r<td>t<td>y<td>u<td>i<td>o<td>p<td>[<td>]<td>a<td>s<td>d<td>f<td>g<td>h<td>j<td>k<td>l<td>;<td>\'<td>z<td>x<td>c<td>v<td>b<td>n<td>m<td>,<td>.<td>/<td>`<td>@<td>#<td>$<td>^<td>&\ </tr></table>'; } function setWpSummary(){ var wpSummary = document.getElementById('wpSummary') if(wpSummary){ var temp=wpSummary.value; temp=temp.replace(/\/\*.*?\*\// , ""); //комментарии temp=temp.replace(/[\s]*/ , ""); //пробелы if (temp==""){ wpSummary.value=wpSummary.value+" "; } } } }