【发布时间】:2019-09-26 08:45:23
【问题描述】:
我正在构建一个框架,用于抓取托管在我们基础架构上的网站,以验证没有任何违反我们政策的行为。如果有被禁止的内容,我们会对其进行截图以及其他详细信息。
显然,如果该元素由于位于 overflow: hidden 父级内部或因为其上方有一个绝对元素而不可见,则您无法截取屏幕截图。
2019 年有没有办法知道一个元素是否可以被人眼看到?
由于它位于 Puppeteer 内部,因此我可以使用原生 Puppeteer API 或所需的任何 JavaScript 库,因为我可以将其注入页面。
问题示例:
$('#above').html(`You can see green: ${$('#below').is(':visible')}. But can you really?`)
#above {
width: 600px;
height: 600px;
position: absolute;
background-color: red;
text-align: center;
font-size: 30px;
padding: 30px;
}
#below {
width: 440;
height: 200;
background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="above"></div>
<div id="below"></div>
(是的,我看到有人问过这个question,但那是 7 年前的事了,此后发生了很大变化,我也可以使用 puppeteer,这在他的情况下是不可能的)。
【问题讨论】:
-
有没有办法在 2019 年知道一个元素是否可以被人眼看到?绝对不能 100% 确定。
-
@MiXT4PE 好吧,50% 比 40% 好,所以无论提高几率对我都有帮助。
标签: javascript jquery html node.js puppeteer