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


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 相关文章推荐
js模拟实现Array的sort方法
Dec 11 Javascript
一些有用的JavaScript和jQuery的片段分享
Aug 23 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
jquery遍历select元素(实例讲解)
Dec 31 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
js判断传入时间和当前时间大小实例(超简单)
Jan 11 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 Javascript
javascript实现拖拽碰撞检测
Mar 12 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
php URL跳转代码 减少外链
2011/06/25 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python 中 Meta Classes详解
2016/02/13 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
预备党员政审材料
2014/02/04 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
物业管理工作方案
2014/05/10 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
用python实现监控视频人数统计
2021/05/21 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang