問題

複数のIFramesを持つページがあるとします。

メインページ

 <div id='someDiv1' style='display:none; '>
       <iframe id='iframe1' src='iframe1.html'>
           <input id='someinput'></input>
       </iframe>
</div>
 

iframe(iframe1.html)

 <input id='someinput'></input>
<script>
  function isElementVisible(elem){

  }
</script>
 

このシナリオでは、IFrameの親divのために要素が表示/非表示になっているかどうかを確認するにはどうすればよいですか?

私は $( '#someinput')。is( ':visible')を使ってみましたが、IFrame内で実行すると常にtrueになります。ページ構造を変更したり、親内のスクリプトを実行したりするオプションはありません。

  ベストアンサー

あなたのiframe内のドキュメントは、メインページの状況を認識していません...しかし、あなたはそれが見えるかどうかをチェックするためにあなたの親を '照会'することができると信じていますか?

 $('#someDiv1', window.parent.document).is(":visible");
 

あなたは本当にそれを必要としないので、jqueryなしで..

 if(window.parent.document.getElementById("someDiv1").style.display != "none") 
    alert("Visible");
else 
    alert("Hidden");
 

  同じタグがついた質問を見る

javascriptjqueryhtmlcssiframe