4

単純なモーダルウィンドウを作成しようとしていますが、IEが連携していません。IEでこの関数を呼び出すと、コンテンツはすべてのコンテンツの下のページの下部に表示され、オーバーレイ画像は表示されません。コードは次のとおりです。

function applyOverlay(src)
{
  var my_overlay = document.createElement('div');

  my_overlay.setAttribute('id','myoverlay');
  var doc_height = document.body.scrollHeight;
  my_overlay.setAttribute('style','text-align:center; position:fixed; top:0px; left:0px; background-image:url("images/trbg.png"); width:100%; height:'+doc_height+'; z-index:999;');
  my_overlay.innerHTML="<iframe style='background:none;' frameborder=0 height='100%' width='80%' src='"+src+"'><iframe>";
  document.body.appendChild(my_overlay);
}
4

1 に答える 1

3

これは一般的なIEの問題です。それは苛立たしいですが、扱いやすいです。

bodyが閉じられる前にdocument.body.appendChildがbodyタグ内で実行された場合、IE6は単にページをロードしません。7と8は、ページが読み込まれるまで待機します

では、この問題にどのように取り組むのでしょうか?

  • body.onloadを使用して、本体が読み込まれるまで待ちます。
  • bodyタグの代わりに要素を別の要素に追加します。

2番目のオプションをお勧めします。別のターゲット要素に要素を追加すると、意図した動作が維持され、サイトに要素を追加する方法は変わりません。

于 2011-06-22T22:28:18.223 に答える