我有一个在站点上运行的 iframe(具有不同的域)。我能否在 iframe 中知道它对用户是否可行,或者该 iframe “居住”的页面是否处于活动状态。谢谢。
问问题
5829 次
2 回答
3
这实际上是不可能的,因为如果您在不同的域/端口/方案上,您将无法从框架本身访问嵌入框架的主页。
如果您的 iframe 在同一个域 && 端口 && 方案上,您可以这样做:
<html>
<body>
<iframe src="frame.htm" id="myframe" style="display:block"></iframe>
</body>
</html>
和frame.htm:
<script>
var is_hidden = parent.document.getElementById("myframe").style.display == "none";
alert(is_hidden ? "I am hidden" : "I am visible");
</script>
更新忽略了“来自不同域”-问题的一部分,相应地更新了帖子。
于 2012-11-12T20:33:54.863 回答
1
您应该查看Intersection Observer API。我能够让它适用于两个不同的域。
像这样的东西对我有用:
function handleIntersect(entries, observer) {
console.log('intersecting', entries[0].isIntersecting, 'visible', entries[0].isVisible);
}
let observer;
let options = {
root: null,
rootMargin: "0px",
threshold: [0.5]
};
observer = new IntersectionObserver(handleIntersect, options);
// The DOM element here should be a div that captures the whole content of the iframe.
observer.observe(DOM_ELEMENT);
于 2021-04-07T14:52:55.547 回答