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


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 相关文章推荐
原生JavaScript实现连连看游戏(附源码)
Nov 05 Javascript
js实现select组件的选择输入过滤代码
Oct 14 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
Aug 05 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
js拖动滑块和点击水波纹效果实例代码
Oct 16 Javascript
vue中的过滤器实例代码详解
Jun 06 Javascript
JS实现点星星消除小游戏
Mar 24 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
Aug 13 Javascript
vue中activated的用法
Jan 03 Vue.js
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
关于js和php对url编码的处理方法
2014/03/04 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
python离线安装外部依赖包的实现
2020/02/13 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python中常用的数据结构介绍
2021/01/12 Python
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
教师专业自荐书范文
2014/02/10 职场文书
爱护公物演讲稿
2014/09/09 职场文书
社区好人好事材料
2014/12/26 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
小学生暑假生活总结
2015/07/13 职场文书
医院保洁员管理制度
2015/08/05 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang