将 div 从父网站复制到 iframe 中的文本区域
Copy div from parent website to a textarea in iframe
在 Google 翻译器中,我制作了 Google Translate with
的第二个实例
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);
我正在尝试将文本从第一个实例的 auto-correction 复制到第二个实例的文本区域:
我正在尝试这个(如果我只是在 Chrome 检查器中复制 html,则此代码有效{使用 [0] 或 [1] 到 select 具有相同元素的元素IDs},但是只能使用带有 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" of undefined at eval,并说问题出在这一行:
TheiFrameInstance.contentWindow.document.querySelectorAll("#source").value = childAnchors1.textContent;
我试过嵌入另一个网站,但也没有用。我还尝试通过 "iframenaturalID" 调用 iframe,并尝试在没有 contentWindow
的情况下编写 TheiFrameInstance.contentWindow.document.querySelectorAll
,但似乎没有任何效果。
如果有任何帮助,我将不胜感激。
最近尝试访问 iframe 时遇到类似问题。不幸的是,如果它是跨域的,这是不可能的。阅读更多:Get element from within an iFrame
希望对您有所帮助。
好的,我用另一种创建 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;
。虽然这不是什么大问题,但仍然很奇怪 returns 这个错误...
在 Google 翻译器中,我制作了 Google Translate with
的第二个实例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);
我正在尝试将文本从第一个实例的 auto-correction 复制到第二个实例的文本区域:
我正在尝试这个(如果我只是在 Chrome 检查器中复制 html,则此代码有效{使用 [0] 或 [1] 到 select 具有相同元素的元素IDs},但是只能使用带有 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" of undefined at eval,并说问题出在这一行:
TheiFrameInstance.contentWindow.document.querySelectorAll("#source").value = childAnchors1.textContent;
我试过嵌入另一个网站,但也没有用。我还尝试通过 "iframenaturalID" 调用 iframe,并尝试在没有 contentWindow
的情况下编写 TheiFrameInstance.contentWindow.document.querySelectorAll
,但似乎没有任何效果。
如果有任何帮助,我将不胜感激。
最近尝试访问 iframe 时遇到类似问题。不幸的是,如果它是跨域的,这是不可能的。阅读更多:Get element from within an iFrame
希望对您有所帮助。
好的,我用另一种创建 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;
。虽然这不是什么大问题,但仍然很奇怪 returns 这个错误...