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


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实现DIV的一些简单控制
Jun 04 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
Javascript 事件流和事件绑定
Jul 16 Javascript
javascript Base类 包含基本的方法
Jul 22 Javascript
JavaScript写的一个DIV 弹出网页对话框
Aug 14 Javascript
js操作select控件的几种方法
Jun 02 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
解决VueCil代理本地proxytable无效报错404的问题
Nov 07 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
JavaScript中Function详解
2015/02/27 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
python中Flask框架简单入门实例
2015/03/21 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
使用TensorFlow实现SVM
2018/09/06 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Python Merge函数原理及用法解析
2020/09/16 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
房产授权委托书范本
2014/09/22 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
小学教师读书笔记
2015/07/01 职场文书
2016党校学习心得体会
2016/01/07 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript