有没有办法确定iframe是否可见/活动

时间:2012-11-12 20:27:47

标签: javascript iframe cross-domain

我有一个在网站上运行的iframe(具有不同的域)。我可以在iframe中知道它是否对用户可行,或者此iframe“居住”的页面是否有效。 感谢。

2 个答案:

答案 0 :(得分:2)

这实际上是不可能的,因为如果您使用的是不同的域/端口/方案,则无法访问从框架本身嵌入框架的主页面。

如果您的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>

更新忽略了“来自其他网域” - 问题的一部分,相应地更新了帖子。

答案 1 :(得分: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);