Скопируйте div с родительского сайта в текстовое поле в iframe - PullRequest
0 голосов
/ 06 октября 2018

В Google Translator я сделал второй экземпляр Google Translate с помощью

var makediv = document.createElement("secondinstance");
makediv.innerHTML = '<iframe id="iframenaturalID" width="1500" height="300" src="https://translate.google.com"></iframe>';
makediv.setAttribute("id", "iframeID");
var getRef = document.getElementById("gt-c");
var parentDiv = getRef.parentNode;
parentDiv.insertBefore(makediv, getRef);

И я пытаюсь скопировать текст из автокоррекции первого экземпляра в текстовое поле второго экземпляра.: image

Я пытаюсь это сделать (этот код работает, если я просто копирую html в Инспекторе Chrome {используя [0] или [1] для выбора элементов с одинаковыми идентификаторами}, однако это возможно толькоиспользовать два экземпляра транслятора с встраиванием iframe):

setInterval(function() {
    var childAnchors1 = window.parent.document.querySelectorAll("#spelling-correction > a");
    var TheiFrameInstance = document.getElementById("iframeID");
    TheiFrameInstance.contentWindow.document.querySelectorAll("#source").value = childAnchors1.textContent;
}, 100);

Но консоль говорит, что не может прочитать свойство "document" undefined в eval, и говорит, что проблема в этой строке:

  TheiFrameInstance.contentWindow.document.querySelectorAll("#source").value = childAnchors1.textContent;

Я пытался встроить другой веб-сайт, но он также не работал.Я также пытался вызвать iframe с помощью «iframenaturalID» и пытался написать TheiFrameInstance.contentWindow.document.querySelectorAll без contentWindow, но, похоже, ничего не получалось.Я был бы очень признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Хорошо, я заставил его работать с другим методом создания iframe:

var a = document.createElement('iframe');
a.src = "https://translate.google.com"; 
a.id = "iframenaturalID";
a.width = "1000";
a.height = "500";
document.querySelector('body').appendChild(a)

И (копирование текстового содержимого из Div коррекции в текстовое поле iframe):

let iframe = document.getElementById("iframenaturalID");
setInterval(function() {
let source = iframe.contentWindow.document.getElementById("source");
let destination = window.parent.document.querySelector("#spelling-correction > a");


source.value = destination.textContent;
     }, 100);

Теперьон делает то, что я пытался сделать, однако я все равно получаю сообщение об ошибке: Uncaught TypeError: Cannot set property 'value' of null at eval, которое указывает на эту строку: source.value = destination.textContent;.Это не большая проблема, но все же странно, что она возвращает эту ошибку ...

0 голосов
/ 06 октября 2018

Недавно возникла похожая проблема при попытке доступа к iframe.К сожалению, это невозможно, если это междоменное.Подробнее: Получить элемент из iFrame

Надеюсь, это поможет.

...