gpt4 book ai didi

javascript - 如何知道 iframe 何时出现?

转载 作者:太空狗 更新时间:2023-10-29 13:51:10 24 4
gpt4 key购买 nike

如果我有一个包含 iframe 的网站:

<html>

<body>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<iframe src="http:/somelink.com/iframe.html"></iframe>
</body>

</html>

那么 iframe 是否有可能知道它是否可以被“看到”?例如,通过了解与屏幕顶部相关的 iframe 的顶部位置。

这是我的测试 iframe:(无论父级的滚动位置如何,所有值为0)

<html>
<head>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {
console.log("ok");

check();

});


function check() {

// position of parent
var parentScrollTop = $(window.parent.document).scrollTop();
console.log("parentScrollTop: "+parentScrollTop);

// self position
var bodyPosition = $("body").position().top;
console.log("body position: "+bodyPosition);

setInterval(check, 1000);
}

</script>

<style type="text/css">
body {
background-color: red;
}
</style>
</head>
<body>

</body>
</html>

为了更清晰,我制作了一张图片。 enter image description here

我必须从 iframe 中知道它是否可见!所以不是来自包含 iframe 的页面。

最佳答案

我知道这是一个老问题,但是 Chrome 已经发布了一些新的 API,可以回答你关于最新版本的 Chrome (22+) 的问题

InteractionObserver 你可以在这里找到它:https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

有一个正在开发的 polyfill(同一个 repo),但只有当脚本在父网页上时,它才能在 iframe afaik 中工作。

对于其他浏览器,它们是一些基于计时攻击的黑暗方法,这篇文章解释得很好:https://www.contextis.com/media/downloads/Pixel_Perfect_Timing_Attacks_with_HTML5_Whitepaper.pdf

编辑:下一个 Firefox 版本现在默认激活 InteractionObserver 功能,同样适用于 Edge!

关于javascript - 如何知道 iframe 何时出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com