首页 > 代码库 > 浏览器各种坑爹兼容问题
浏览器各种坑爹兼容问题
浏览器各种坑爹问题
最近在做项目中,被浏览器各种坑,于是总结了一下遇到的问题
一:浏览器自动保存密码
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方法
- DateTime函数,在IE8以下无法带参数
- TextArea在IE9以下maxlength属性失效
- 数组不能用for in 要用for
- 数组没有indextOf方法
- 不支持filter,trim 要用jquery 的$filter,$trim
- Html拼写必须完全正确,不能少结尾标签或多写什么东西ie8的容错性不好
- js改变img标签的src属性在IE下没反应,路径后加个Date()时间戳即可
浏览器各种坑爹兼容问题