开发中遇到的,苦恼了我2天的时间,终于搞定了。好了废话不说了,看一个实例吧。初次发帖可能格式有点问题。

[code]<html>
<head>
<script language="javascript" src="mootools.js" type="text/javascript"></script>
</head>
<body οnunlοad="a.cancel();b.cancel();c.cancel()">
<a href="/index.html" target="_blank">123</a>
</body>
<script>

var a=new Ajax('test.php', {method: 'get',onComplete:go}).request();//new ajax是mootools里面对ajax封装的类,可以用大家自己的替代.
var b=new Ajax('test.php', {method: 'get',onComplete:go}).request();
var c=new Ajax('test.php', {method: 'get',onComplete:go}).request();

function go(html){
alert(html);
}
</script>
</html>[/code]

上面这个是html文件

[code]

<?php
sleep(5);
echo "alert(0)";
?>

[/code]
php文件,不知道为啥出现了两个一样的,大家拷贝一段就行了,你也可以用servlet改写一下,反正很简单,就是让他老人家休息一下,然后给个字符串就行了。

把html和php放在一起,然后加上mootools.js或者你自己的ajax实现。然后配置好apache,我是放在根目录了,就是127.0.0.1大家随便放(只要你能找到就ok)。

Q1.好了先打开一个页面,你会发现页面首先呈现123。然后5秒后弹出2个alert,10秒中弹出1个alert。这是一次个问题,为啥这样呢?ajax不是异步调用的吗?firefox什么样呢?
A1.ie是傻瓜式,就是无论啥ajax请求一样或者不一样的,他也一次发两个(当然你发送大于等于2个时),他不会同时发送两个,其他的要等到那两个返回,再发,不过还是最多一次两个。
ff是智能式,他的原理是如果请求是相同的,他会一个一个发,如果是不同的他会一起发。

Q2.现在在刚才的页面基础上点那个123的链接(在新窗口中打开本页),然后在5秒中之内关闭窗口,你会发现什么??试过再往下看。
























Boom,ie完蛋了或者说你这个域完蛋了,看看是不是再访问127.0.0.1的域都是白页了,你只有把同一进程的ie关掉才能恢复正常。
A2.这是为啥呢?据我分析ie发出ajax请求后,他是不见棺材不掉泪的类型,它默认是一直等待,就算你把那个ie关掉,只要同一进程的ie还开着,他就一直等,其实等来也没有结果了(这是个人揣测,具体ie咋实现的微软好像没有说,要不就是说了我没找到.......)。咋办呢?就这个问题困扰我好久,后来发现了,可以abort掉请求的,在mootools.js里面用cancel函数在XHR里面。你只需要这样加入
[code]window.attachEvent('onunload',function(){a.cancel();});
window.attachEvent('onunload',function(){b.cancel();});
window.attachEvent('onunload',function(){c.cancel();});[/code]就ok了,如果你没用mootools.js你使用
[code]
req.abort();//req是你的ie中ajax请求对象
[/code]
这样这个问题就可以解决了,满怀欣喜的用了这个方法,结果在生产环境中发现还是出现白页现象,忽然有种从天堂到地狱的感觉。接着我继续分析。

Q3.在你的html代码<body>中加入这个<img src="/test.php" id="img"/>。然后继续刚才的操作吧,呵呵,发现啥了,白页又出来了吧。咋解决呢?
A3.最后我分析因为照片没有加载完,所以不会调用onunload方法,最后找到了onbeforeunload方法,这次终于解决了这个问题。

总结:一个看似很奇怪的生产环境中出现白页(ie不请求服务器的现象)背后却有这么多技术点,不过ff就不会有这bug,总之ie 是king of the bug and king of the leak。

初来此处,给大家带来一个奇怪的ie bug,兼对比ie和ff ajax处理方式相关推荐

  1. Grafana面板(panel):数据处理(Transformation)---一个奇怪的功能!

    文章目录 Transformation 概念 多个transformation的执行顺序 transformation类型 Add field from calculation Concatenate ...

  2. 一个奇怪的问题:匿名内部类用Lambda替换以后出现了cannot be cast to class的问题

    文章目录 遇到问题 学习过程中的问题总结 遇到问题 最近在学习<Spring实战>,学习到第六章的Spring Data端点添加自定义的超链接时遇到了一个奇怪的问题. 当我向http:// ...

  3. MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题

    今天遇到一个奇怪的问题. 开发环境: 1. Eclipse CDT,使用 MinGW 的 gcc 编译器和函数库 2. Visual Studio 2008 问题描述: 在 eclipse cdt 中 ...

  4. java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了

    java线程测试-一个奇怪的状况-执行未完成直接结束了 import org.junit.Test; /** * 同步线程测试 * @author jview * */ public class te ...

  5. 【深度学习看手相】台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 【新智元导读】本周日带来一个有

    [深度学习看手相]台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 [新智元导读]本周日带来一个有 ...

  6. Delphi XE 使用 MySQL 数据库一个奇怪的问题

    Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...

  7. 荣耀v9系统升级 服务器,荣耀V9首次系统升级 带来一个有意思的新功能

    原标题:荣耀V9首次系统升级 带来一个有意思的新功能 近日,刚刚上市半个月的安卓旗舰新机荣耀V9迎来了首次系统升级,新的固件版本号为"B113".这次更新带来了"3D创意 ...

  8. dedecms在linux主机下的一个奇怪错误

    扬帆blog原创文章,转载请保留原地址:http://www.wesoho.com/article/asp/2874.htm dedecms上传到linux空间后遇到一个问题,所有header转向失效 ...

  9. 汇编语言:实验8分析一个奇怪的程序

    实验介绍 实验8 分析一个奇怪的程序 分析下面的程序,在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 实验代码 ;实验8 分析一个奇怪的程序 ;分析下面的程序,在运行前思考: ...

最新文章

  1. IDEA配置 及 快捷键
  2. java: 程序包com.github.pagehelper不存在_Rust语言正在兴起,Java、Python、C的末日来临?...
  3. 手机MODEM 开发(33)---SimCard 学习总结
  4. vmware虚拟机里的服务器自动关闭,让VirtualBox虚拟机在主机关闭时自动关闭或保存状态VBoxVmService...
  5. k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054
  6. 如何快速提升 Go 程序性能?
  7. 微软WIP漏洞奖励计划新增基于攻击场景的奖励类别,最高$10万
  8. linux远程连接交换机,思科:路由器、交换机 ssh远程连接
  9. 体检套餐管理系统的综合版
  10. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
  11. 电脑端实现微信双开(登录两个微信)
  12. 修改select2未搜索到数据时的提示语
  13. 5月14日 打印100以内与7有关的数
  14. 计算机上静音快捷键是什么,电脑静音快捷键是什么(电脑静音快捷键怎么设置)...
  15. selenium小白学习笔记(6) - 使用parameterized参数化
  16. Nodejs ORM Prisma 介绍
  17. linux dns访问日志内容格式,谢烟客---------Linux之DNS请求流程及资源记录定义
  18. 阿里云飞天技术总架构师唐洪:飞天技术与应用
  19. 5G的10大典型应用场景,及详细应用功能
  20. 有关防火墙的调研总结

热门文章

  1. 图片放大镜效果实现过程详解
  2. 二维非稳态导热微分方程_二维非稳态传热的温度场数值模拟
  3. 软件工程导论—软件测试
  4. 小红书数据分析:如何用ChatGPT输出爆文笔记
  5. 文本框的常用编辑操作
  6. x<<1 与 x<<1|1
  7. Linux挂载磁盘命令
  8. 在python中输入10个整数并求出最大值_python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。...
  9. 模仿别人的简单贪吃蛇程序
  10. Vue设计一个简单日程表