首页 > 代码库 > 浏览器各种坑爹兼容问题

浏览器各种坑爹兼容问题

                         浏览器各种坑爹问题

最近在做项目中,被浏览器各种坑,于是总结了一下遇到的问题

一:浏览器自动保存密码

    Google浏览器每次登录时都会提示是否保存密码,当保存之后,系统其他有密码输入框的地方就都会自动显示,比如密码修改和注册,很不友好。于是试了下面几种方法

    1:onload事件,把密码框的值清空:

         <script language="javascript">
                window.load = function(){
                        document.getElementById(‘password‘).value=http://www.mamicode.com/‘‘;
                };

          </script>

      但是没有效果,因为自动保存密码是浏览器的行为,它不是在onload事件之前赋值。

    2:于是想了个笨办法,就是把type="password"改成type="text",因为type不是password就不会出现记住密码功能,然后设置一个变量如:var val=""或者是设置一个隐藏域<input type="hidden"name="val">,最后用onpropertychange把密码换成一行圆点,并把值赋给val,提交时再把val的值还原回去,由于效果和*号一样。 用户是看不出来的。

    3:上面的方法太麻烦了,于是查了一下浏览器自动保存密码的原理,即通过寻找type为password的input输入框,然后前边一个输入框就作为用户名记住。这真是蛋疼的设计,于是我也只能用蛋碎的方法,就是在用户名和密码前,加一个隐藏的密码输入框。

二: button变成服务器控件后,IE10报_doPostBack未定义

当button设置runat=”server”变成服务端控件之后,IE10下面报_doPostBack未定义。这是因为.NET 2.0和.NET 4一起发布的浏览器定义文件中有一个错误,也就是它们保存相当一部分浏览器版本的定义。但是浏览器的有些版本(比如IE10)不再在这个范围之内,因此,ASP.NET把它们看做是未知的浏览器,默认降级处理。

     

有两种修复方法:一个就是整体修复,另一个就是单独修复每个站点。

1:整体修复

         修复所做的就是更新IE.浏览器和火狐浏览器的文件(路径:\Windows\Microsoft.NET\Framework\<version>\Config\Browsers), 加上最新和未来已定义的版本号。更新文件在下面下载

 .NET 4 - http://support.microsoft.com/kb/2600088

.NET 2.0 - http://support.microsoft.com/kb/2600100

2:单点修复

  需要下载一个更新包放到项目的App_BrowsersUpdate文件夹中

  .NET4浏览器更新包 - http://nuget.org/List/Packages/App_BrowsersUpdate

.NET2浏览器更新包- http://nuget.org/List/Packages/App_BrowsersUpdate.net20

三:IE8下不能使用的js方法

  1. DateTime函数,在IE8以下无法带参数
  2. TextArea在IE9以下maxlength属性失效
  3. 数组不能用for in 要用for
  4. 数组没有indextOf方法
  5. 不支持filter,trim  要用jquery 的$filter,$trim
  6. Html拼写必须完全正确,不能少结尾标签或多写什么东西ie8的容错性不好
  7. js改变img标签的src属性在IE下没反应,路径后加个Date()时间戳即可

 

浏览器各种坑爹兼容问题