IE8和IE10的兼容性问题

来源:互联网 发布:汉堡王 必点 知乎 编辑:程序博客网 时间:2024/05/25 23:58

这两天遇到遇到一个问题,有的地方电脑用的新系统,装了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

 

 

0 0
原创粉丝点击