0

divがある html ページがあります。div の中にはiframeがあり、

<div id="div1">
<iframe id="biframe" src="" allowtransparency="true" application="yes" >
</iframe>
</div>

JavaScript 関数では、iframe の src を動的に変更しています。

 window.frames['biframe'].document.location.href="105.htm";
 $('div1').style.display="block";

上記の2行がボタンクリックで呼び出され、divが表示されiframeが読み込まれます。

問題 :ボタンをクリックすると、正しく表示される前に iframe が点滅します。フラッシュは非常に短時間発生しますが、ボタンをクリックするたびに異なるソースを表示しようとすると非常にイライラします. とりあえずボタンは5つ。

試した解決策:いくつかのフォーラムで提供された以下の解決策を試しました。

<iframe src="..." style="visibility:hidden;" onload="this.style.visibility='visible';"></iframe>

...しかし、うまくいきませんでした。

この問題を終わらせる良い解決策を提案してください。

注 : このページでは、JQuery/任意の JS ライブラリを使用できません (許可されていません)。

4

2 に答える 2

0

最初にボディ部分で、iframe の可視性を非表示 (不要) に設定しました。ボタン クリック関数の後半では、可視性を非表示のままにして、src 属性を動的に変更しました。

iframe を表示する別の関数を作成し、iframe の onload イベントでその関数を呼び出しました。

そしてそれは働いた!!

サンプルコードは次のとおりです。

<div id="Bframe">
<iframe id="biframe" style="visibility:hidden;" src="" allowtransparency="true" application="yes" onload="showiframe()">
</iframe>
</div>

...ボタンクリックイベントで以下の行を呼び出し、

$('biframe').style.visibility="hidden";
window.frames['biframe'].document.location.href="105.htm";
$('Bframe').style.display="block";

...そして、以下の関数は後で呼び出されます。

function showiframe()
{
    $('biframe').style.visibility="visible";
} 

何が起こっている?

ボタンをクリックすると、iframe が非表示になります。src属性を割り当てます。私のiframeロードイベントは、iframeがロードされた後に呼び出され、iframeが表示されます。つまり、iframe は読み込み中に非表示になり、ホワイト フラッシュが回避されます。

于 2012-11-15T12:10:19.170 に答える