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);
}