产品的需求是做到和app一样的效果,用户无法输入除数字外的其他字符。想到的做法是监听keyup的keycode,然后根据输入字符的keycode判断是否可以输入。想法往往会被现实的残酷打倒,这种做法在兼容性上有很大问题,存在的主要问题如下:
- 输入法的兼容问题。无法获取某些android输入法的keycode或者是keycode为0,这种情况下基本上无解,我们做不了什么,来监听用户输入了什么
- 浏览器兼容性问题。存在虽然页面上不出现你输入的字符,但它却占用了输入框的可输入长度,并且提交的时候有值。
最后的做法是:只限制用户输入的长度,并且使用HTML5的属性,type=number默认调用数字键盘,并加上友好的提示来规避这个问题。
- 需求是写一个邮件模版,兼容个主流邮箱(163,qq,gmail等)
使用场景是这样的,在注册的时候需要给用户发送邮件,点击激活帐号,或者是用户有敏感操作需要邮箱接收某些验证信息来完成整个流程的操作。这个模版是使用html和css完成的,并且各邮箱对样式的控制比较严格,所有class或id等选择器的样式基本上都会被过滤掉,最靠谱(在写网页时,被认为最不靠谱)的做法是行内样式,即:使用style或者本身的属性定义的样式是不会被过滤掉的,具体的可以来
这里了解一下 。
由于需要提供公共的js服务,会被各个业务引用到自己的页面内,但是又不能统一各业务使用相同的编码格式(由于历史原因,有些业务使用GBK编码,也不会因为引入我们公共的JS而进行全站的调整),所以我们需要检测网页当前的文档编码。,并在相关操作时传递给接口,告诉服务端,保证服务端正常处理用户所传数据。这里需要了解document的三个属性:charset、defaultCharset、characterSet,分别获取的是网页设置的编码、默认地区的编码、文档渲染的编码。了解了这个就可以按照自己的需求获取想要的编码类型了,具体的例子可以看看《
获取当前文档编码的思考》
我们的使用场景,由于公司很多域名状态需要同步,这样的话,在退出的时候,需要将其他域名登录状态退出,保证登录状态的一致性。之前的做法是访问一个地址,这个地址在服务端按照配置好的域名列表进行302调整退出,在域名少的时候没有功能上的问题(在IE下会出现页面不停闪动),在域名增多时,会出现跳转次数过多导致页面崩溃的情况。并且这个个浏览器情况不太一样,这里只需要记住限制最少的是IE7、8为10次,超过10次页面就会崩溃。具体各个浏览器的限制次数是多少可以查看《
浏览器重定向限制问题》
我们会试用window.open和window.close进行新窗口的开启和关闭,但是在双核浏览器中存在一个问题就是,当创建的窗口内核与父窗口的内核不一致时,新窗口无法通过window.close进行关闭。
- 为了满足业务在开发过程中,苦于没有那么多帐号导致影响开发进度的状况,学习了一下插件的开发,并开发了一个帐号相关的插件,在这个过程中遇到了一个问题,最新chrome浏览器无法使用非官方商店下载的插件,此时@snadn提供了一个方案,完美解决。想要了解的可以看一下《chrome无法使用非官方商店扩展解决方法》
这里只是整理了一下自己工作以来遇到的问题和解决方案,不能说这些方法是自己独创的,大部分都是参考网络上各位分享的实现方法,自己在使用过程中整理的。肯定会有人说:介绍这些问题的文章到处都有,有必要自己再写一遍吗?做这样重复性的工作有什么用呢?对于这个问题我不知道是否有准确的答案,在这里我想说一下我为什么这么做: