TinyMCE реплицирует код автоматически после вставки содержимого - PullRequest
0 голосов
/ 14 января 2019

После вставки изображения, динамически вставляемого в span с class="foo", каждая следующая строка имеет одинаковый интервал внутри класса.

// ...
const eg = '<span class="image"><img src="' + data.url + '"></span>';
ed.execCommand('insertHTML', false, eg); // or setContent or whatever I use

После этого, если я нажму клавишу ввода, я получу это снова и снова:

<p><span class="image"></span></p>

Вопрос: есть ли способ избежать такого поведения?

Пример: http://jsfiddle.net/rnv4q39f/

1 Ответ

0 голосов
/ 17 января 2019

Наконец-то я смог сделать это с помощью этого обходного пути в опции настройки:

ed.on('keydown', ev => {
    if (ev.keyCode === 13) {
        if (ed.dom.hasClass(ed.selection.getNode(), 'image')) {
            ed.execCommand('mceInsertContent', false, '<p>&nbsp;</p>');
            return false;
        }
        else return true;
    }
});

Какой я извлек из этого вопроса вопрос, который задает тот же (и я нашел сегодня): https://stackoverflow.com/a/45394340/1684970. Разница в том, что с использованием

ed.selection.setContent('<p>&nbsp;</p>');

редактор сохраняет неразрывный пробел , но с использованием

ed.execCommand('mceInsertContent', false, '<p>&nbsp;</p>');

это не так.

...