我有一个在网站上运行的iframe(具有不同的域)。我可以在iframe中知道它是否对用户可行,或者此iframe“居住”的页面是否有效。 感谢。
答案 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);