今天有个表单在打开页面并关闭后,就再也无法打开了
这个问题和之前的表单设计工具的问题有些类似,查了一下,原因如下:
在IE窗口关闭的时候产生了postback的提交,服务器端执行完毕后,response的数据无法处理导致假死
引发postback的是页面上两个textbox的onpropertychange事件
按理说,未修改相关Element的相关属性值是不会引发onpropertychange事件的
我追踪了一下,发现是因为页面上引用了JQuery,JQuery在页面unload的时候会自动给element附加一些属性,类似下图
所以在页面关闭的时候,触发了textbox的opropertychange事件,并进一步触发了服务端控件的回发
这个问题的解决方法有如下两种
1:如果JQuery没用,去掉JQuery即可
2: Jquery有用的话,要么在onpropertychange中判断属性,根据属性决定是否回发;要么去掉此事件,把处理逻辑放到其他源事件中
再进一步分析IE会什么会假死,猜测如下
一般IE执行网络访问时,一个进程默认会产生最多3个网络连接访问服务器
但现在这种状况下,IE将request完毕后,这几个网络连接在收到response后,将数据传给IE原来的页面时
原来的页面却因为关闭没有了,所以这几个网络连接要么处于堵塞状态,要么产生异常挂了,所以当前IE进程就再不能执行网络访问了