Вместо того чтобы копировать текст вручную, вы просто выделяете нужную фразу мышкой, и скрипт сам оформляет её в красивую цитату с обращением к автору.
Содержание и возможности
* Автоматический захват текста: Скрипт «понимает», какой фрагмент на странице вы выделили.
* Умное форматирование: Добавляет жирный шрифт для имени пользователя и заключает текст в теги Цитата.
* Быстрый переход: После нажатия скрипт сам ставит курсор в поле ввода сообщения, чтобы вы могли сразу начать писать ответ.
* Совместимость: Работает как в современных, так и в старых браузерах.
Как это работает (простыми словами)
* Поиск текста: Когда вы вызываете функцию, она проверяет, выделили ли вы что-нибудь на странице.
* Сборка сообщения: Скрипт берет имя пользователя (которое передается в функцию) и ваш выделенный текст, склеивая их в одну строку вида: Имя, quote Текст /quote.
* Вставка: Программа находит на странице окно чата (по ID mchatMsgF) и дописывает туда готовую цитату.
Главные фишки скрипта
* Экономия времени: Не нужно переключаться между окнами и нажимать «копировать-вставить».
* Чистота кода: Скрипт очень легкий и не нагружает страницу.
* Универсальность: Его легко адаптировать под любой сайт, просто изменив ID поля ввода.
Установка
Главная Управление дизайном Мини-чат Редактирование шаблонов Вид материалов где будет находится кнопка для цитирования
Код
<a href="javascript:void('Quote')" onclick="quoteSelection('$USERNAME$');return false;" class="fa-quote"><i class="fa-solid fa-quote-left"></i></a>
тут же в самый низ данный скрипт
Код
<script>function quoteSelection(username) {
let selectedText = '';
// Получаем выделенный текст
if (window.getSelection) {
selectedText = window.getSelection().toString();
} else if (document.selection && document.selection.type != 'Control') {
selectedText = document.selection.createRange().text;
}
// Форматируем цитату
let quoteText = `[b]${username},[/b] [quote]${selectedText}[/quote] `;
// Находим поле ввода и добавляем текст
let inputField = parent.window.document.getElementById('mchatMsgF');
inputField.focus();
inputField.value += quoteText;
};
// Разработчик by jaguar37rus site htmlstart.ucoz.net
</script>
let selectedText = '';
// Получаем выделенный текст
if (window.getSelection) {
selectedText = window.getSelection().toString();
} else if (document.selection && document.selection.type != 'Control') {
selectedText = document.selection.createRange().text;
}
// Форматируем цитату
let quoteText = `[b]${username},[/b] [quote]${selectedText}[/quote] `;
// Находим поле ввода и добавляем текст
let inputField = parent.window.document.getElementById('mchatMsgF');
inputField.focus();
inputField.value += quoteText;
};
// Разработчик by jaguar37rus site htmlstart.ucoz.net
</script>
Что ещё можно добавить:
* Авто-скролл: Страница сама прокрутится к чату, чтобы вы сразу видели результат.
* Проверка на пустоту: Если вы случайно нажали кнопку, не выделив текст, скрипт просто обратится к пользователю по имени, не создавая пустую цитату.
* Очистка выделения: После того как цитата улетела в чат, выделение с текста снимется (так удобнее).
Код
<script>// Разработчик by jaguar37rus site htmlstart.ucoz.net
function quoteSelection(username) {
let selectedText = '';
// 1. Получаем выделенный текст
if (window.getSelection) {
selectedText = window.getSelection().toString();
} else if (document.selection && document.selection.type != 'Control') {
selectedText = document.selection.createRange().text;
}
// 2. Форматируем результат
// Если текст выделен — делаем цитату, если нет — просто обращение
let quoteText = selectedText
? `[b]${username}[/b], [quote]${selectedText}[/quote] `
: `[b]${username}[/b], `;
// 3. Находим поле ввода (mChat)
let inputField = parent.window.document.getElementById('mchatMsgF');
if (inputField) {
inputField.focus();
inputField.value += quoteText;
// 4. ФИШКА: Плавная прокрутка к полю ввода
inputField.scrollIntoView({ behavior: 'smooth', block: 'center' });
// 5. Очищаем выделение (чтобы не мешало)
window.getSelection().removeAllRanges();
}
};</script>
function quoteSelection(username) {
let selectedText = '';
// 1. Получаем выделенный текст
if (window.getSelection) {
selectedText = window.getSelection().toString();
} else if (document.selection && document.selection.type != 'Control') {
selectedText = document.selection.createRange().text;
}
// 2. Форматируем результат
// Если текст выделен — делаем цитату, если нет — просто обращение
let quoteText = selectedText
? `[b]${username}[/b], [quote]${selectedText}[/quote] `
: `[b]${username}[/b], `;
// 3. Находим поле ввода (mChat)
let inputField = parent.window.document.getElementById('mchatMsgF');
if (inputField) {
inputField.focus();
inputField.value += quoteText;
// 4. ФИШКА: Плавная прокрутка к полю ввода
inputField.scrollIntoView({ behavior: 'smooth', block: 'center' });
// 5. Очищаем выделение (чтобы не мешало)
window.getSelection().removeAllRanges();
}
};</script>
Почему это круто:
* Никакого мусора: Больше не будет пустых тегов quote /quote, если вы забыли выделить фразу.
* Фокус на главном: Плавный скролл (smooth scroll) выглядит профессионально и помогает не потеряться на длинной странице форума.
* Юзабилити: Снятие выделения после вставки — это признак хорошего тона в веб-разработке.
Попробуйте — и ваши читатели скажут "спасибо".