【发布时间】:2021-11-19 23:53:39
【问题描述】:
我有这个结构,我想从div 中删除test2 类
iframe1 -> iframe2 -> <div class="test1 test2">.... </div>
我可以访问 iframe2,但在第二个 iframe 中找不到上面的 div。
这是我尝试过的
document.querySelectorAll('iframe').forEach(item => {
var y = item.contentDocument.body.getElementsByTagName("iframe");
setTimeout(() => {
y[0].style.width = '100vw';
$(y[0]).contents().find(".test2").removeClass('.test2')
}, [500])
})
y[0].style.width = '100vw';
这是有效的。但我无法找到 test2 类的 div
console.log(y[0]) 是预期的 iframe。
y[0].contentDocument 为空
如果有人可以帮助我解决这个问题。提前致谢
此外,在一些答案中,我发现如果 iframe 是跨源的,我们无法更改它的内容。但在这里我有相同的起源。
我只想要一些 css 更改,要么我需要删除 test2 类或覆盖它。
【问题讨论】:
-
我正在使用 setTimeout,因为 iframe2 没有立即加载
-
幸运的是我们不能。唯一可能的情况要求您拥有父页面和 iframe,在这种情况下,您必须通过消息系统。但在所有情况下都禁止直接访问。
-
你会想要使用正确的
.removeClass()语法,你有'.test2'。这是不正确的。您想使用类名,而不使用.。 -
这也行不通。当我尝试执行 console.log($(y[0]).contents().find(".test)) 我得到了这个。
S.fn.init [prevObject: S.fn.init(0)] length: 0 prevObject: S.fn.init(0) length: 0 prevObject: S.fn.init(1) 0: iframe -
如果我没看错,
iframe2嵌套在iframe1中,对吗?如果是这样,则必须在找到并获取iframe1的内容后,再查找并获取iframe2的内容。您的脚本没有深入到找到正确的内容。
标签: javascript html jquery iframe