Я создал расширение Google Chrome, чтобы пользователи могли выбирать текст в компоненте. Это отлично работает для большинства сайтов. Тем не менее, Facebook обрабатывает обновления статуса по-разному. Кажется, что даже если вы заполняете то, что кажется единственным текстовым полем, на самом деле он использует конструкцию div > div > span > span
для каждой отдельной строки в этом текстовом поле. Я понятия не имею, почему они решили это сделать, но значительно упростили замену нескольких строк текста.
Есть ли способ выбрать несколько строк (или даже смежных частей нескольких строк) текста в обновлении статуса Facebook и заменить данные?
Соответствующая часть моего кода выглядит следующим образом:
function replace_text(language){
let selection = window.getSelection();
string = selection.toString();
/* This section contains code that uses string.replace to replace characters in the string. */
document.execCommand("insertText", false, string);
}
Основываясь на том, как работает мой код сейчас, если я заменю текст на одной строке, у меня нет проблем. Но, если я заменю текст, который охватывает несколько строк, я получаю пустое непригодное поле ввода. Несомненно, это потому, что он удаляет части html-кода. Как я могу исправить свой код, чтобы процесс замены работал правильно не только для других сайтов, но и для Facebook?