首頁  >  文章  >  web前端  >  Firefox回傳時Iframe的顯示Bug的解決方法_經驗交流

Firefox回傳時Iframe的顯示Bug的解決方法_經驗交流

PHP中文网
PHP中文网原創
2016-05-16 12:06:001948瀏覽

firefox返回時iframe的顯示bug的解決方法_經驗交流

<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>

打開bug演示,由於cookie不存在,顯示的三個flash都是透過iframe實現的  
點擊“點擊這裡增加一個iframe廣告”,跳到一個新的頁面寫入名為firefoxiframe的cookie  
點擊“返回”或瀏覽器的返回按鈕,回到bug演示頁面,發現iframe裡面的flash錯位,也就是位置2的iframe連結的flash並沒有載入,顯示的是位置3的flash,位置3的顯示的是位置4的flash,位置4的flash卻依舊存在。
關閉標籤頁(不是關閉整個瀏覽器,如果關閉整個瀏覽器cookie也失效)或新開啟一個標籤頁重新載入該頁面,4個iframe正常顯示4個flash  
此時如果點擊“點擊這裡刪除這個iframe廣告”,跳到新頁面刪除cookie,返回也發現iframe中的flash錯位  
如果寫入cookie或刪除cookie時,不透過瀏覽器的返回,直接透過網址訪問,則不會出現錯位  
簡單分析和解決方案 
似乎firefox返回時,javascript重新執行了,但是iframe並未依據src屬性重新載入,而是給iframe和src以類似編號似的配對,而由於返回時javascript的執行,導致iframe多了一個(或少了一個),這就導致後面的配對錯位。

以上僅為猜測,但這的確是firefox(2.0.0.3)的一個bug,ie返回時javascript重新執行,並且iframe的依據src重新載入,opera返回時javascript不重新執行,頁面沒有變化。

解決方案是在文字中增加一個隱藏的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的顯示bug的解決方法_經驗交流的內容,更多相關內容請關注php中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn