Задать вопрос
colonel
@colonel
Разработчик PHP, Laravel

Как в редакторе Gutenberg получить выделенный текст?

Пробовал так:

const getSelectedText = () => {
	const { getSelectedBlock, getSelectionStart, getSelectionEnd } = select('core/block-editor');
	const block = getSelectedBlock();

	if (!block || block.name !== 'core/paragraph') return '';

	const content = block.attributes.content;
	const start = getSelectionStart()?.offset || 0;
	const end = getSelectionEnd()?.offset || content.length;

	return content.slice(start, end);
};


Но, если есть HTML тэги в выделенном тексте, или до него, то работает не правильно, не тот кусок текста возвращает.
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
colonel
@colonel Автор вопроса
Разработчик PHP, Laravel
Вообщем, получилось вот так:

const getSelectedText = () => {
	const { getSelectedBlock, getSelectionStart, getSelectionEnd } = select('core/block-editor');
	const block = getSelectedBlock();

	if (!block || block.name !== 'core/paragraph') return '';

	const start = getSelectionStart();
	const end = getSelectionEnd();

	if (!start || !end) return '';

	const value = create({ html: block.attributes.content });
	const sliced = slice(value, start.offset, end.offset);
	return getTextContent(sliced);
};


ИИ подсказал
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы