跨域表单提交状态的变相判断代码


Posted in Javascript onNovember 12, 2009

拐个弯想,如果开始可以获得iframe内部页面信息,那么不能获得的时候,不就说明表单已经提交了么~
我们发现百度的竞价右下角信息,也是采用的这种方法判断的,大家可以参考下。
示例:

test.html:

<html> 
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> 
<body style="background:#a7a7a7;"> 
<iframe id="testiframe" name="testiframe"></iframe> 
<form method="post" action="http://www.test.com/testaction.php" target="testiframe" name="testform"> 
<input type="text" name="dddd"><input type="submit" value="ddd" name="submitbtn"/> 
</form> 
</body> 
<script> 
document.testform.onsubmit = function () { 
document.testform.submitbtn.disabled = true; 
submitMonitor(); } 
function submitMonitor () { 
try{ 
var hash = document.getElementById('testiframe').contentWindow.location.hash; 
setTimeout(submitMonitor,100); 
} catch (e) { 
document.getElementById('testiframe').src = "about:blank"; 
document.testform.submitbtn.disabled = false; 
} 
} 
</script> 
</html>

注意下面的代码是跨域的,不是在一个域名下的
testaction.php
<?php 
sleep(5); 
echo $_POST['dddd']; 
?>

弊端:
这个弊端还很明显,如果是404,403,500等错误,也会误认为是成功提交。
所以,请注意:此方法属研究,开拓思维用。
这段是百度的判断代码
var sfMessTimes; 
function sfMessSubmitMonitor () { 
try{ 
var hash = sf_mess_lib.getElement(SF_MESS_FRAME_ID).contentWindow.location.hash; 
        sfMessTimes ++; 
        if (sfMessTimes > 50) { 
            alert(sf_mess_msg.fail); 
            sf_mess_lib.getElement(SF_MESS_SUBMIT_ID).disabled = false; 
            for (var i = 0, l = sf_mess_cols.length; i < l; i++) { 
                document.getElementById(SF_MESS_PREFIX + sf_mess_cols[i].idname).disabled = false; 
            } 
        } else { 
            setTimeout(sfMessSubmitMonitor,100); 
        } 
} catch (e) { 
sf_mess_lib.getElement(SF_MESS_FRAME_ID).src = "about:blank"; 
        alert(sf_mess_msg.success); 
sf_mess_lib.getElement(SF_MESS_SUBMIT_ID).disabled = false; 
        for (var i = 0, l = sf_mess_cols.length; i < l; i++) { 
            var inputCfg = sf_mess_cols[i]; 
            var inputEl = document.getElementById(SF_MESS_PREFIX + inputCfg.idname); 
            inputEl.disabled = false; 
            inputEl.value = filtInnertip(inputCfg.innertip); 
        } 
} 
}
Javascript 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
jQuery中has()方法用法实例
Jan 06 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
纯JavaScript实现的分页插件实例
Jul 14 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
Mar 06 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 Javascript
通过JS判断网页是否为手机打开
Oct 28 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 #Javascript
ASP中进行HTML数据及JS数据编码函数
Nov 11 #Javascript
javascript 日期常用的方法
Nov 11 #Javascript
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 #Javascript
jQuery 白痴级入门教程
Nov 11 #Javascript
Javascript 解疑
Nov 11 #Javascript
不一样的文字闪烁 轮番闪烁
Nov 11 #Javascript
You might like
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python三级菜单的实例
2017/09/13 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
python实现大文本文件分割
2019/07/22 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
如何给Python代码进行加密
2020/01/10 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
三好学生自我鉴定
2013/12/17 职场文书
简历的自我评价
2014/02/03 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
六年级数学教学反思
2016/02/16 职场文书