Как настроить горячие клавиши чтобы обрамлять выделенный текст bbcode?
Отсутствует
del
Случайно отправилось. Но раз поднял тему, то пришлось делать. zelenamanazakasamanasaka, держите:
Custom Buttons + в секцию "Инициализация" новой или существующей кнопки (Как добавить кнопку(помощь для новичка)):
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.
- кнопка, по идее, должна и с мультипроцессным режимом работать, но не проверял.
Отредактировано turbot (17-08-2016 19:19:38)
Отсутствует
сэнкс, ну с кнопками понятно, а горячие клавиши там есть для вставки ббкодов?
Отсутствует
turbot
спасибо за код
zelenamanazakasamanasaka
вы действительно читать по-русски не умеете, или так, попридуриваться пришли, типа клоуна
// Вставить 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 - Ссылка с ссылкой из буфера обмена // и т.д.
Отсутствует
Ничего лучше CustomBB (Расширение для вставки BB-кодов - помогите довести до ума | Форум Mozilla Россия) я не видел. Жаль, что с последней версией (требование цифровой подписи) отвалилось.
Отсутствует