jsiframe緩存
㈠ 清理iframe 緩存
A頁面如下:
<body>
<iframe src="b.html" name="b" style="border:#3161C6 solid 2;">
</iframe>
<iframe src="main.html" name="main" style="border:#3161C6 solid 2;">
</iframe>
</body>
B頁面如下:
<body>
<a href="http://www..com" target="main">網路</a>
<a href="http://www.qq.com" target="main">QQ</a>
</body>
</html>
可以更新啊
㈡ 父頁面緩存的文件 iframe會用到嗎
iframe原本的用法在現在看來是不合時宜的,問題太多了,不一一列舉,但是它的其他功能卻是不錯的黑魔法,這里列舉一些,想到了再更新:
用來實現長連接,在websocket不可用的時候作為一種替代,最開始由google發明。Comet:基於 HTTP 長連接的「伺服器推」技術
跨域通信。javaScript跨域總結與解決辦法
歷史記錄管理,解決ajax化網站響應瀏覽器前進後退按鈕的方案,在html5的history api不可用時作為一種替代。
純前端的utf8和gbk編碼互轉。比如在utf8頁面需要生成一個gbk的encodeURIComponent字元串,可以通過頁面載入一個gbk的iframe,然後主頁面與子頁面通信的方式實現轉換,這樣就不用在頁面上插入一個非常巨大的編碼映射表文件了
評論里有提到,用iframe實現無刷新文件上傳,在FormData不可用時作為替代方案
to be continued ...
㈢ iframe子頁面訪問過後相應js 緩存在瀏覽器,怎麼不緩存
這兩天遇到一個很奇怪的問題,一個頁面嵌套了一個iframe頁面,當這個頁面提交後再次跳轉到本頁面時,原本iframe內的頁面應該刷新數據的,結果在ie下面卻沒刷新(FF下沒問題),必須手動F5或者新開一個瀏覽器標簽頁瀏覽才能刷新,否則在本頁面的瀏覽器上按回車是沒用的,查閱了很多資料,最後終於發現是iframe緩存機制在搞鬼,用以下方法即可解決:
<script type="text/JavaScript">
var randomnumber=Math.floor(Math.random()*100000)
document.write('
<iframe src="http://www.freedonation.com/hunger/hunger_thankyou.php3?randomnumber='+randomnumber+'" name="aframe" width="100%" height="400"></iframe>')
</script>
通過請求多加一個值為隨機數的參數,這樣瀏覽器認為每次請求的頁面都是新的而保證了iframe頁面每次都是重新載入的。
頂
0
踩
0
㈣ js載入iframe,導致iframe頁面刷新2次
為 IFRAME 標簽的 src 屬性指定具體 URL 後再將節點插入 DOM 樹中 。
㈤ javascript 如何獲取iframe裡面的內容
要解釋這個問題,首先要解釋兩個技術點。
每個「窗口」都是一個JS Runtime,即JS的運行時。如果只有一個窗口,那麼就只有一個Runtime;如果一個窗口下面還有一個iframe,那麼就有兩個Runtime;以此類推。
Runtime之間互操作(或者通信)是有跨域限制的。也就是說,如果這個窗口本身是a..com域名下的頁面,那麼如果這個頁面下還有一個iframe,這個iframe中載入的頁面是b..com域名下的。那麼外層的JS。就不能跟這個iframe中的內容互操作(或者通信)。
因此外層Runtime中的JS想操作內層iframe中的內容,就必須要避免跨域限制。要麼內層iframe載入頁面的域名跟外層是一樣的。要麼就是需要在內層iframe載入的頁面中執行document.domain = '.com';從而設置跟外層的主域相同。
例如,當前頁面是a..com/test.html
<html>
<head>
</head>
<body>
<iframeid="iFrm1"src="
<script>
document.domain='.com';
varifrm1=document.getElementById('iFrm1');
ifrm1.onload=function(){
alert(ifrm1.contentWindow.document.getElementById('innerDiv').innerHTML);//彈出恭喜你操作到內部iframe中的元素了!!!
};
</script>
</body>
</html>
iframe中載入的頁面內容如下:
<html>
<head>
</head>
<body>
<divid="innerDiv">恭喜你操作到內部iframe中的元素了!!!</div>
<script>
document.domain='.com';
</script>
</body>
</html>
在HTML5中新增了postMessage的API。可以方便窗口跟內部iframe之間進行通信,並且可以實現跨主域通信。但是有一些限制,1.老版本的瀏覽器一般不支持。2.父窗口只能向iframe中發送信息,iframe只能收消息,且父窗口不能直接操作iframe中的內容。3.父窗口發送的數據也是有限制的。只能發送基本數據類型或者plain object。
㈥ 如何用JS獲取iframe裡面的內容
1、獲取iframe
eg. var ifr_window = window.frames["frameName"];
2、獲取iframe中的元素
eg1. 將iframe中id為elementId 的元素置為不顯示:
var ifr_window = window.frames["frameName"];
ifr_window.elementId.style.display = 'none';
eg2. 獲取iframe中id為listTable的表格
var oTable = window.frames["myFrame"].document.all.listTable;
3、隱藏或顯示表格的某列
js函數:
function setHiddenOrShowCol(oTable, iCol, type) {
for (i = 0; i < oTable.rows.length ; i++) {
oTable.rows[i].cells[iCol].style.display = type;
}
}
調用舉例,將id為listTable的表格元素的第4列置為不顯示:
var oTable = window.frames["myFrame"].document.all.listTable;
setHiddenOrShowCol(oTable, 3, 'none');
調用舉例2,將id為listTable的表格元素的第4列置為顯示:
var oTable = document.frames.myFrame.document.all.listTable;
setHiddenOrShowCol(oTable, 3, 'block');
㈦ js 前端過濾器 實現圖片緩存與版本控制更新的功能
兄台多慮了,以我個人見解,這個功能應該是前端js搞不定,你js什麼時候載入就是個問題,第二個問題就是js也檢測不到網路請求,那是瀏覽器乾的事。
但是針對緩存這事,一個是在服務端設置,也就少web服務或者少CDN那設置緩存。很多情況下,圖片,css都是默認緩存的,你打開開發者工具之後確保禁用緩存的復選框取消,你刷新一下,看看那圖片、css是不是就是304狀態。
㈧ 如何向iframe中寫入js代碼讓js在iframe中執行
1、首先,新建一個網頁。
㈨ ie中是不是相同的js因為緩存它只是載入一次
一個web工程的js文件發布後一般是不會變的,為了提高用戶訪問的速度,瀏覽器會把js,圖片等一些文件緩存到本地目錄,所以說一般都只載入一次,但是有時候我該了web工程下的js文件後,它有時候後刷新。
㈩ 用JS控制iframe里的頁面,做到3秒自動換一個。
<iframeid="ifr"src="http://www..com/XXXX.html"></iframe>
假定iframe的id為ifr
下面是js程序
vartimes=10;//循環次數
variframe=document.getElementById('ifr');//獲取iframe元素
//設置定時執行
vart=setInterval(function(){
if(times--<=0)clearInterval(t);
changeFrameSrc(iframe);
},3000);//3000毫秒
//改變iframe的src屬性的函數
functionchangeFrameSrc(f){
varsrc='http://www..com/'+rand(100,999)+'.html';//生成地址
f.src=src;
}
//隨機函數
functionrand(min,max){
returnparseInt(Math.random()*(max-min+1)+min);
}