IE8和IE10的兼容性问题
这两天遇到遇到一个问题,有的地方电脑用的新系统,装了WIN7,IE10浏览器.然后用IE10打开之前的一些网站,就会出现各种的毛病,
比如服务器控件GridView的RowCommand的一些事件无法执行
脚本报"_doPostBack" 的值为null,未定义或不是Function对象 的错误
asp:Text控件的width="24px"失效,要以style="width:24px"的方式设定文本框的宽度
等等,这个追溯到微软以前觉得自己很牛X,不需要遵循W3C协议,可是后来各种浏览器的崛起(虽然内核大部分都还是使用的IE内核),
于是乎蛋疼的微软在后面的版本又遵循了W3C的协议,导致前后不兼容的各种各种BUG,换个浏览器直接死一片......
后来在网上搜了挺久,总结了2个解决办法:
1.兼容本机的所有项目的补丁:
官方下载:
http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2600100&kbln=zh-cn
2.读取浏览器配置文件:
去下载一个browser格式的浏览器文件
http://globalryan.net/doc/browserNet4.rar
http://globalryan.net/doc/browserNet2.rar
在网站项目添加一个新建项
点击是,让VS帮你在根目录新建一个App_Brwsers文件夹
用下载的ie.browser覆盖VS生成的browser文件
这样操作后,整个项目里面的网站都会直接启动兼容模式,不需要在浏览器里面选择"兼容模式" .
细心的程序猿们会发现,其实兼容模式状态下的前台代码多了一下几个地方:
<input type="hidden" name="_EVENTTARGET" id="_EVENTTARGET" value="" /> <input type="hidden" name="_EVENTARGUMENT" id="_EVENTARGUMENT" value="" />
//<![CDATA[ var theForm = document.forms['form1']; if(!theForm){ theForm = document.form1; } function _doPostBack(eventTAarget, eventArgument){ if(!theForm.onsubmit || (theForm.onsubmit() !=false)){ theForm._EVENTTARGET.value=eventTarget; theForm._EVENTARGUMENT.value=eventArgument; theForm.submit(); } } //]]>
这样单个项目的兼容性就处理好了,大神们如果看到有错请多加提点,不喜勿喷`````
SamB
浙公网安备 33010602011771号