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


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的类型简单说明
Sep 03 Javascript
js实现单一html页面两套css切换代码
Apr 11 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
微信小程序学习之数据处理详解
Jul 05 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 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
mysq GBKl乱码
2006/11/28 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
javascript中apply/call和bind的使用
2017/02/15 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
Python的词法分析与语法分析
2013/05/18 Python
Python程序中设置HTTP代理
2016/11/06 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python绘制立方体的方法
2018/07/02 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
python3 配置logging日志类的操作
2020/04/08 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
高三毕业生自我鉴定
2013/12/20 职场文书
请假条标准格式规范
2014/04/10 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
小学体育课教学反思
2016/02/16 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Python的三个重要函数详解
2022/01/18 Python
青岛市的收音机研制与生产
2022/04/07 无线电
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
Java实现注册登录跳转
2022/06/16 Java/Android