ajax隐藏帧技术
思韵闪耀
2018-01-26
0

所谓隐藏帧,指的是将一frame或iframe设置大小为0,显示不出来,在界面上相当于只有一个页面。此时可利用隐藏的帧来做一些事情。可完成不刷新页面的情况下接收数据,因为刷新的是隐藏帧,而隐藏帧大小为0,不可见,故可认为当前页面没有刷新。

实现原理:
操作帧将数据传入给隐藏帧,隐藏帧执行后转入一新的页面,在此新的页面中执行onLoad()方法改变操作帧的数据,从而使得操作帧看起来在不刷新页面的情况下完成数据的更新。

实现:
1,定义frame
<frameset rows=”100%,0″ frameborder=”0″>
<frame name=”displayFrame” src=”display.htm” noresize=”noresize”>
<frame name=”hiddenFrame”? src=”about:blank” noresize=”noresize”>
</frameset>
frameset rows=”100%,0″ ,frameborder=”0″ 0指定隐藏帧大小为0,border为0指定帧集不显示边框,达到完全隐藏的效果。

2,在触发后执行(触发可以是输入完成之类)
var name= document.getElementById(“userName”).value;
top.frames["hiddenFrame"].location=”/manage/login.action?name=” + name;
//通过location就开始执行action,并且指定执行后返回的页面显示到隐藏帧中。

3,返回的页面在加载时改变操作帧的数据,使得操作帧在不刷新情况下获得数据。

window.onload=function(){
var data= document.getElementById( “msg” );
top.frames["displayFrame"].displayInfo(data.innerHTML)
//调用操作帧页面中的displayinfo来调整页面数据。
}

注:可看出上述采用的是url传参,即GET方法,而GET方法主要用来获得数据,故其参数的大小是有限制的,若想传大量参数,即想利用隐藏帧实现POST方法。方式如下:
目前的难点是将大量参数传到隐藏帧中去,但不通过url传参,实现方式:
1,3参见上的get
2.不是调用js方法进行location执行,而是正规的在form中提交!!!

<form method=”post” action=”/manage/login.action” target=”hiddenFrame”>
<input type = “test” name=”userName” />
<input type=”submit” value=”submit”/>
</form>
form的target属性用来在指定的位置跳转到新的URL,与<a/>中的target类似
这里就是在隐藏帧中跳转到指定的URL,完成了POST方法。 (get方法也可如此用)

注:(1)iframe也可如上用。
iframe,它是在HTML 4.0中引入的。iframe与帧基本是相同的,唯一的区别是iframe可以放在一个未设置帧集的HTML页面中,可以使页面中的任意部分成为一个帧。iframe技术可以在未预先设置帧集的页面中使用,能够更好地适应功能的逐渐添加。
(2)隐藏帧技术的缺点是若页面不存在不能得到错误信息,完全依赖于返回正确的页面,而用XmlHttp可以通过status来判断。
(3)隐藏帧的其它作用:
1)用户登录之后保存用户的信息,因为存在session的话session可能丢失,做一个临时存储区用
2)连续播放背景音乐,而不会随着页面的更换而打断!


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

LAN

相关内容

网页保护、网页图片保护
1、禁止另存网页,把如下代码加入到网页body/body中 程序代...
2025-05-30
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26
数字证书和加密Exchan...
加密和数字证书是所有组织的重要考虑因素。 默认情况下,Exchan...
2022-09-16
mysql 如何跟踪_My...
在项目开发中,难免会遇到在数据库服务器端跟踪sql执行语句的需求,...
2022-09-08
Docker的一系列操作(...
首先要清楚Redis是安装在Docker容器,所以要进行很长的Do...
2022-09-08
服务器安全策略配置方案一览
服务器安全可以通过软件,修复漏洞以及第三方云服务来保障,但是服务器...
2022-06-17

热门资讯

Invalid left-ha... 写一个提交函数的时候,发现函数不生效,F12之后看到Invalid left-hand side i...
响应图片(Responsive... 一、开门见山 响应图片技术可以说是响应布局衍生出来的一个小分支。说白了,就是不同显示器宽度下调用不同...
轻松删除MetInfo CMS... 第一步:首页底部版权,模板文件foot直接删除; 第二部:首页头部generator版权,\publ...
ckplayer6.3如何替换... 1.刚打开播放器,视频在缓冲时播放器中间的LOGO怎么替换?(如下图) 2.视频播放器右上角的CK ...
inDensity,inTar... 如果接触Android中的Bitmap较深的话,肯定会知道标题上的这三个属性值,那么这三个属性值的关...
JS 验证 利用Javascript中每个对象(Object)的prototype属性我们可以为Javascri...
在文本框中输入时保证总是在最... 那就要在keypress时保证文本框的光标在尾部,而文本框value赋值后其光标默认在最后,故可采用...
微信UA Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5...
检测大写锁定键(Caps Lo... h1检测大写锁定键/h1form action="#" method="post" p label ...
iframe高度自适应,全屏,... !注意此方法用于同一个域名下,可能需要部署在服务器上才能看出效果 !DOCTYPE html PUB...