У меня есть расширение Google Chrome на основе JavaScript, которое принимает в качестве входных данных выбранный в данный момент текст на веб-странице, а затем переводит этот текст на английский язык. Исходный текст заменяется переведенным текстом в той же позиции ...
У меня есть требование, чтобы некоторые сайты отображались в iframe, и для этих сайтов я также хочу перевести выбранный в данный момент текст в iframe.
Исходный код в начале расширения, где он получает текущий выбранный текст, приведен ниже -
var selection = document.getSelection();
var range = selection.getRangeAt(0);
Как мне изменить приведенный выше код / добавить некоторый код, чтобы переменная 'selection' могла сохранять либо текущий выбранный текст в главном окне, либо текущий выбранный текст в iframe? Также переменная 'range' должна быть правильно инициализирована, даже если переводимый текст находится в пределах iframe ...
Кроме того, после завершения перевода текст на языке оригинала заменяется переведенным текстом в том же месте на веб-странице, переменная «замена» хранит переведенный текст -
var holder = document.createElement('span');
holder.innerHTML = replacement;
var child = holder.firstChild;
var ref = child.cloneNode(true);
// ... now insert into document in place of the original content:
range.deleteContents();
range.insertNode(ref);
while (child = child.nextSibling) {
ref.parentNode.insertBefore(child.cloneNode(true), ref.nextSibling);
ref = ref.nextSibling;
}
Обратите внимание, что код для инициализации 'range' приведен в первом разделе кода, показанном в этом вопросе ...
Как мне изменить указанный выше код, чтобы новый элемент span создавался в iframe? Я понял, что для этого ключевой частью является код
var holder = document.createElement('span');
Переменная 'holder' должна также иметь возможность создавать элемент span в iframe ...
Как мне изменить этот код?