頁面中存在iframe時刷新頁面的問題

近期在開發中遇到一個很奇怪的問題:HTML頁面中有個iframe,初始狀況下是空的,當點擊特定按鈕後iframe會加載特定頁面。javascript

但很快就發現有點問題了:當iframe加載了特定頁面後,此時只要按F5刷新頁面,iframe仍然會顯示剛剛加載過的頁面,而不是初始化時的空頁面。php

但更奇怪的事是:一樣的HTML代碼,只要把文件名改成php(其餘動態語言腳本沒有試過)就不會出現上面的問題,html

另外若是使得Ctrl+F5強制刷新,無論是html和php也都沒有發生上面的問題。java

示例代碼:緩存

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE></TITLE>
   <script type="text/javascript">
 var initFrame = function(){
	test.location='http://www.baidu.com';
 };
 var clearFrame = function(){
	test.location='about:blank';
 };
 </script>
 </HEAD>
 <BODY>
 <pre> 說明:
 剛開始iframe並無內容,點擊加載後纔有內容
 但此時刷新下頁面,iframe內仍然會顯示加載後的內容
 而不是空內容,這時須要增長清除iframe內容的代碼來解決此問題
 但時在php程序中,此狀況不會發生,刷新頁面時iframe內容顯示爲空 </pre>
 <iframe name="test" src="" width=100% height="300px" border=0></iframe>
 <div>
	<a href="javascript:initFrame()">加載iframe</a>
	<a href="javascript:location=location">刷新頁面</a>
	<a href="javascript:clearFrame()">清空iframe</a>
 </div>
  <script>
  //clearFrame();
  </script>
 </BODY>
</HTML>

爲此我作了屢次試驗,總結出結論以下:測試

文件類型\刷新方式 F5 Ctrl+F5

JS
spa

location=location.net

location.replace(location)
code

JS
htm

location.reload

history.go(0)

HTML 異常 正常 正常 異常
PHP 正常 正常 正常 異常


測試環境:Win7 64bit IE9/Firefox14

結論:

一、相同的代碼,動態腳本和靜態HTML執行結果仍是有差別的

二、頁面中嵌套iframe在進行頁面可能會有」緩存「(不知道用這個詞是否合適)

三、JS不一樣刷新頁面的方式會有不一樣效果,相似location=location的方式類至關於強制刷新,iframe裏的內容也會初始化;相似location.reload的方式並不會初始化iframe裏的內容,iframe內會保持以前的狀態。

要想讓以上全部的方式都不會有iframe顯示異常的狀況也很好辦,只要增長一段 js初始化iframe的代碼就能夠了

上面示例代碼中

//clearFrame();
這一行前面的註釋去掉便可。

 

另外,iframe也會有其餘一些煩人的問題如:iframe內打開連接問題、跳轉異常問題、JS問題等

因此不少時候iframe並非一個好的方案,最後勸你們一句:iframe有風險,使用前請謹慎。

原創內容,轉載請註明出處

http://blog.csdn.net/rainday0310/article/details/7933280

相關文章
相關標籤/搜索