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


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读取中文COOKIE的解决办法
Feb 15 Javascript
JavaScript 学习点滴记录
Apr 24 Javascript
jQuery 剧场版 你必须知道的javascript
May 27 Javascript
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
jquery实现select选中行、列合计示例
Apr 25 Javascript
js与C#进行时间戳转换
Nov 14 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
Jun 01 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
Jun 07 Javascript
JS实现烟花爆炸效果
Mar 10 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 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
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python变量命名的7条建议
2019/07/04 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
安全生产投入制度
2014/01/29 职场文书
大学生毕业求职信
2014/06/12 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
道歉的话语大全
2015/05/12 职场文书
运动会宣传语
2015/07/13 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL