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


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 相关文章推荐
mouse_on_title.js
Aug 25 Javascript
use jscript List Installed Software
Jun 11 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
express的中间件bodyParser详解
Dec 04 Javascript
Jquery 实现checkbox全选方法
Jan 28 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
js读取本地文件的实例
Dec 22 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
详解Vue中组件的缓存
Apr 20 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文档更新介绍
2011/07/22 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
python轻松查到删除自己的微信好友
2016/01/10 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
tensorflow 变长序列存储实例
2020/01/20 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
深入分析python 排序
2020/08/24 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
全球最大的服务市场:Fiverr
2017/01/03 全球购物
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
银行财务部实习生的自我鉴定
2013/11/27 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
欢迎领导标语
2014/06/27 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
小学生通知书评语
2014/12/31 职场文书
奖学金个人总结
2015/03/04 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
中国合伙人观后感
2015/06/02 职场文书
初中生活随笔
2015/08/15 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers