将div从父网站复制到iframe中的textarea

时间:2018-10-06 01:33:39

标签: javascript iframe embed selector parent

在Google翻译器中,我使用了第二个Google翻译实例

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);

我正在尝试将文本从第一个实例的自动更正复制到第二个实例的textarea: image

我正在尝试(如果我只是在Chrome检查器中复制html(使用[0]或[1]选择具有相同ID的元素},则此代码有效,但是只能使用两个翻译器实例嵌入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);

但是控制台说它不能在eval读取未定义的属性“ document”,并说问题出在这一行:

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

我尝试嵌入另一个网站,但是它也没有起作用。我还尝试通过“ iframenaturalID”调用iframe,并尝试在没有TheiFrameInstance.contentWindow.document.querySelectorAll的情况下编写contentWindow,但似乎没有任何效果。 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

最近尝试访问iframe时遇到了类似的问题。不幸的是,如果它是跨域的,那是不可能的。了解更多:Get element from within an iFrame

希望有帮助。

答案 1 :(得分:0)

好吧,我使它与创建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;。虽然这不是一个大问题,但仍然很奇怪,它返回了此错误...