王志勇 发表于 2018年10月13日 08:59
调试中,例如一个<form>的表单,让它的target指向一个iframe,即<form method='post' action='abc'>……</form>。iframe的名称为abc,即<iframe name='abc'>……<iframe>
同时,将<iframe>用display来隐藏,使其不可见,如<iframe name='abc' style='display:none'>,或者用一个DIV来隐藏iframe。
这样,提交表单后,网页可以不刷新,这种效果很像现在的手机APP,也像AJAX。前段时间在网上查询有没有人用这种技术,其实早在AJAX出来的几年前,就有一少部分人用iframe来实现这种功能。因此,iframe的这种功能,在2000年的时候的浏览器都可以支持,只是后来的人由于功能的需要,才会在无意间发现iframe的强大之处。
父页面,需要在不用刷新的情况下,自动更新的区域,设置一个id,如<div id='aa1'></div>。iframe包含的网页里,将要传给父页面的数据,使用innerHTML的方式,写法是<script>top.aa1.innerHTML='……';</script>
这种写法,在火狐下很可能会无法显示,正确写法改为:
<script>top.document.all.aa1.innerHTML='……';</script>
几乎AJAX使用的大多数场景,都可以用iframe+innerHTML代替,效果完全一样,我在很多台手机中调试过,都能正常运行,手机浏览器都支持iframe。
有人说AJAX调试相对更简单,但我个人感觉iframe+innerHTML调试相对更简单,兼容的浏览器更广。iframe还有一个AJAX无可比拟的优势,iframe可以实现表单的post,而AJAX不能post。
调试中,iframe调用的页面,如果跨越了站点(同一域名下的二级域名),则无法使用top.document.all.cr1.innerHTML。解决的办法是,iframe调用的页面为同一网站内的页面,这个页面用file_get_contents()函数来调用远程数据,这样不但能跨越站点,还能跨越不同的域名。
上述提到的非刷新的交互方式,下列举一个小的细节实例。因为AJAX无法POST,所以这里我使用开发中自己无意中发现的iframe的方式。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
夜晚靓歌(10):你没看过的《星雨心愿》
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +