您的位置:首页 > 其它

浏览器各种坑爹兼容问题

2014-09-26 23:36 253 查看
浏览器各种坑爹问题

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

一:浏览器自动保存密码

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

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

<script language="javascript">
window.load = function(){
document.getElementById('password').value='';
};

</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()时间戳即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: