ホームページ >ウェブフロントエンド >CSSチュートリアル >Firefox 復帰時の Iframe 表示バグの解決策_Experience 交換
firefox がリターンするときの iframe 表示バグの解決策_experience 交換
<script type="text/javascript">//<![cdata[ if(getcookie('firefoxiframe')){ document.write('<p id="addad"><a href="cookie.html">点击这里删除这个iframe</a></p>'); document.write('<iframe height="120" width="300" marginheight="0" marginwidth="0" frameborder="0" src="nadpre.swf"></iframe>'); }else{ document.write('<p id="addad"><a href="cookie.html">点击这里增加一个iframe</a></p>'); } //]]></script>
バグのデモを開きます。cookie が存在しないため、表示される 3 つのフラッシュはすべて iframe を通じて実装されています。「ここをクリックして iframe 広告を追加します」をクリックして新しいページにジャンプし、firefoxiframe という名前の cookie を書き込みます
「戻る」またはブラウザの戻るボタンをクリックしてバグ デモ ページに戻ることが判明しました。 iframe 内のフラッシュの位置が間違っていました。つまり、位置 2 で iframe にリンクされているフラッシュが読み込まれていませんでした。位置 3 のフラッシュは表示され、位置 3 のフラッシュは位置 4 に表示されましたが、位置 4 のフラッシュはまだ存在していました。
タブを閉じる(ブラウザ全体を閉じないでください。ブラウザ全体が閉じている場合、cookieも無効になります)、または新しいタブを開いてページをリロードすると、4つのiframeで通常通り4回のフラッシュが表示されます。
今回は、「この iframe 広告を削除するにはここをクリックしてください」をクリックし、新しいページに移動して cookie を削除します。戻ると、iframe 内のフラッシュが間違った位置にあることがわかります。
cookie を書き込む場合cookieを削除するか、ブラウザを経由せずにurlから直接アクセスすると、ずれは生じません
簡単な分析と解決策
firefoxが復帰するとjavascriptが再設定されるようです-実行されましたが、iframe は src 属性に従って再ロードされませんが、iframe と src には同様の番号が与えられます。ペアリングと、戻るときの javascript の実行により、iframe が 1 つ増えます (または 1 つ減ります)。後続のペアリングがずれる原因となります。
上記は単なる推測ですが、これは確かに firefox (2.0.0.3) のバグです。ie が復帰すると javascript が再実行され、src に基づいて iframe が再ロードされます。javascript は再実行されません。 -opera が戻ったときに実行されます。ページは変更されていません。
解決策は、テキストに非表示の iframe を追加してスペースを占有することです。上記のコードを次のように変更します。
document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>'); //把上面的代码修改成为 document.write('<iframe src="#" style="display:none;"></iframe>'); document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>');
上記は次のとおりです。 firefox が返す内容 iframe 表示バグの解決策_エクスペリエンス交換コンテンツ その他の関連コンテンツについては、php 中国語 web サイト (www.php.cn) に注目してください。