【发布时间】:2021-03-27 15:15:18
【问题描述】:
我打开了 Chrome 开发控制台窗格并评估了这个表达式:
Array.from(document.querySelectorAll("div.fc-event-inner")).filter(e => {
let r = e.getBoundingClientRect();
return (r.left < 1354) && (r.top < 531) && (r.right > 1167) && (r.bottom > 487);})
它返回一个空数组。
然后我使用开发窗格中的“在页面中选择一个元素以检查它”按钮单击一个元素并在元素列表中查看我的元素展开。然后我重新评估了相同的表达式,它返回了一个包含 2 个元素的数组,即使页面上没有任何内容移动。为什么我得到不一致的结果?
顺便说一句,我可能应该简化这个问题。我认为当我简单地评估时也是如此
document.querySelectorAll("div.fc-event-inner")
编辑: 我正在尝试在运行目标 querySelectorAll 之前评估每个 IFrame 的内容。当我评估这个表达式时,一切正常,但我仍然没有得到任何更新的结果:
document.querySelectorAll("iframe")[0].contentWindow.document.childElementCount
但是当我尝试评估这种情况时:
document.querySelectorAll("iframe")[1].contentWindow
Chrome 有一个相当严重的错误 (STATUS_BREAKPOINT):
我可以使用 eval 绕过这个错误,但是我发现 iframe 的内容是空白的:
eval("document.querySelectorAll(\"iframe\")[1].contentWindow.document.body.outerHTML")
结果:“
”【问题讨论】:
-
你能给我们看一些 HTML 吗?
-
我认为我正在使用的 HTML 太复杂而无法共享。
-
好的。您确定在评估表达式时元素已加载吗?
-
@Rojo 当我评估表达式时,我正在查看屏幕上的相关元素。它们一定已经加载了。
-
哦,它在 iFrame 中。 How about try it like this the first time?
标签: javascript html google-chrome dom