3

サイトで実行される iframe があります (別のドメインを使用)。ユーザーにとって実行可能かどうか、またはこのiframeが「住んでいる」ページがアクティブかどうかをiframe内で知ることができますか。ありがとう。

4

2 に答える 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を確認してください。2 つの異なるドメインで動作させることができました。

このようなものが私のために働いた:

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 に答える