>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Firefox http://forum.mozilla-russia.org/viewforum.php?id=4 >Вставка ббкодов по горячим клавишам http://forum.mozilla-russia.org/viewtopic.php?id=70412 |
zelenamanazakasamanasaka > 17-08-2016 15:29:15 |
Как настроить горячие клавиши чтобы обрамлять выделенный текст bbcode? |
turbot > 17-08-2016 17:40:40 |
del |
turbot > 17-08-2016 19:18:42 |
turbot пишет
Случайно отправилось. Но раз поднял тему, то пришлось делать. zelenamanazakasamanasaka, держите: Выделить код Код:addEventListener('keydown', e=> { var BBCode, clipboard, clipboardText, br = window.gBrowser.selectedBrowser; if (document.activeElement != br) return; if (e.altKey && e.shiftKey && !e.ctrlKey && !e.metaKey) { // Вставить BBCode по сочетанию клавиш Alt + Shift + код клавиши (не зависит от раскладки клавиатуры) в активную текстовую форму на странице // Посмотреть коды клавиш можно здесь: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Constants_for_keyCode_value switch (e.keyCode) { case 66: BBCode = 'b'; break; // Alt + Shift + B - жирный текст case 73: BBCode = 'i'; break; // Alt + Shift + I - наклонный текст case 76: BBCode = 'url'; break; // Alt + Shift + L - ссылка case 81: BBCode = 'quote'; break; // Alt + Shift + Q - Цитата case 82: BBCode = 'quote'; clipboardText = gClipboard.read(); break; // Alt + Shift + R - Цитата с текстом из буфера обмена case 83: BBCode = 'spoiler'; break; // Alt + Shift + S - спойлер case 84: BBCode = 'spoiler'; clipboard = gClipboard.read(); break; // Alt + Shift + T - Спойлер с названием из буфера обмена case 85: BBCode = 'url'; isURL(); break; // Alt + Shift + U - Ссылка с ссылкой из буфера обмена // и т.д. default: return; } e.preventDefault(); e.stopPropagation(); br.isRemoteBrowser ? br.messageManager.loadFrameScript( `data:,(${encodeURIComponent(insert + ')("' + BBCode + ', ' + clipboard + ', ' + clipboardText + '");')}`, false ) : insert(BBCode, clipboard, clipboardText); } function isURL() { var uri, url = gClipboard.read().trim(); if (!url) return; try {uri = makeURI(url)} catch(ex) {} if (uri) { clipboard = url; } } function insert(bb, cl, txt) { var elm = Services.focus.focusedElement; if (!elm || !("editor" in elm) || elm.hasAttribute("readonly")) return; var editor = elm.editor.QueryInterface(Components.interfaces.nsIPlaintextEditor); cl ? editor.insertText("[" + bb + "=" + cl + "]" + editor.selection + "[/" + bb + "]") : editor.insertText("[" + bb + "]" + (txt ? txt : editor.selection) + "[/" + bb + "]"); } }, false, gBrowser); Добавлять свои - по образцу. Думаю разберетесь - кое-что откомментировал. На основе кода Dumby. - кнопка, по идее, должна и с мультипроцессным режимом работать, но не проверял. |
zelenamanazakasamanasaka > 18-08-2016 12:34:11 |
сэнкс, ну с кнопками понятно, а горячие клавиши там есть для вставки ббкодов? |
sonyas75 > 18-08-2016 12:43:29 |
turbot Выделить код Код:// Вставить BBCode по сочетанию клавиш Alt + Shift + код клавиши (не зависит от раскладки клавиатуры) в активную текстовую форму на странице // Посмотреть коды клавиш можно здесь: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Constants_for_keyCode_value switch (e.keyCode) { case 66: BBCode = 'b'; break; // Alt + Shift + B - жирный текст case 73: BBCode = 'i'; break; // Alt + Shift + I - наклонный текст case 76: BBCode = 'url'; break; // Alt + Shift + L - ссылка case 81: BBCode = 'quote'; break; // Alt + Shift + Q - Цитата case 82: BBCode = 'quote'; clipboardText = gClipboard.read(); break; // Alt + Shift + R - Цитата с текстом из буфера обмена case 83: BBCode = 'spoiler'; break; // Alt + Shift + S - спойлер case 84: BBCode = 'spoiler'; clipboard = gClipboard.read(); break; // Alt + Shift + T - Спойлер с названием из буфера обмена case 85: BBCode = 'url'; isURL(); break; // Alt + Shift + U - Ссылка с ссылкой из буфера обмена // и т.д. |
AlexII > 19-08-2016 04:35:59 |
Ничего лучше CustomBB (Расширение для вставки BB-кодов - помогите довести до ума | Форум Mozilla Россия) я не видел. Жаль, что с последней версией (требование цифровой подписи) отвалилось. |