【发布时间】:2018-02-09 19:14:02
【问题描述】:
Brainf... 使用 iframe。
所以,当前页面结构:
page -> main_iframe -> iframe1 -> iframe2
脚本在“main_iframe”中执行。 这个“main_iframe”有“iframe1”,“iframe1”里面有“iframe2”:
我想更改 iframe2 的 width=100%,它在 iframe1 内,它在 main_iframe 内
所以我在“main_iframe”执行以下 js,它可以工作:
document.querySelector('#iframe1').onload = function() {
setTimeout(function(){
document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].style.width = '100%';
}, 3000);
}
但是如何删除超时计时器,以便在 iframe2 加载后立即呈现?
我尝试了以下方法:
document.querySelector('#iframe1').onload = function() {
document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].onload = function () {
document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].style.width = '100%';
}
};
但如果没有运气,onload 触发后什么也没有发生。
【问题讨论】:
-
首先,从选择器中删除空格 ->
querySelectorAll(" iframe")之后,删除第二个 onload(第一个 onload 中的那个),因为您不需要等待 frame2 的内容在将宽度设置为 frame1 的 100% 之前加载。 -
@Archer 空间已修复(错误仅在 stackoverflow 发布时出现)。因此,在删除第二次加载后,它必须以简单的
document.contentDocument....开头,您的意思是document.contentDocument.querySelectorAll("iframe")[0].style.width = '100%';?
标签: javascript iframe settimeout