如何彻底屏蔽(关闭)搜狗浏览器自带的软键盘
的有关信息介绍如下:为何要关闭搜狗浏览器密码框自带的软键盘呢?主要有下面两点原因:
1、搜狗浏览器自带的软键盘有浏览器兼容性,在IE内核模式下它会抛出脚本异常(下面有介绍)
2、我们的密码框控件有自己的软键盘功能,两个软键盘在一个密码框上面,影响体验
希望此文不要被搜狗浏览器看到(改内核策略);如果看到了,也没关系,希望能一起提升用户体验。这也是发表本文的初衷,分享经验给其它同行。
7搜狗浏览器密码框软键盘存在的兼容性测试方法
大家先来认识搜狗浏览器的软键盘
密码框右侧多了一个软键盘图标,无一幸免;
但我们自己的控件有软键盘功能了,使用我们软件的用户在使用过程中,吐槽我们软件搞两个软键盘图标,而且其中一个在IE模式下点击密码框还会弹出脚本异常的错误。下图红圈中的1图标就是搜狗浏览器自带的,2图标是我们控件自定义的。是不是觉得很碍眼。。
如何关闭搜狗浏览器自带的软键盘
依次操作,浏览器【工具】【选项】【安全设置】,这也是网上最多的解决方案。
这种方案有什么问题?
首先,对于成千上万的用户,他们不会全部都知道这个方法;
其次,客服也不可能手把手帮所有用户关闭;
有没有“一劳永逸”的解决方案,就是从代码上或者样式上解决这个问题?
咨询了搜狗浏览器的技术人员,得到的回复是不能通过代码关闭的。
客户持续反馈问题给我们
这个兼容问题持续了3年,我们的测试人员和客户间断性给我们技术部门反馈重复的bug。看来是该好好抽时间来彻底解决这个问题了。
解决思路,从根源问题下手
搜狗浏览器自带软键盘,密码框获取焦点报脚本异常,如下图:
【按F12】【进入开发者模式】【开启调试】【点击密码框控件】【报错】
分析问题原因
我们根据问题1(脚本错误)来分析,ie模式下浏览器自带软键盘会报脚本错误,脚本错误,脚本错误(重要的事情说三遍)。哪里来的脚本?当然是自家浏览器强制注入的了,你用它的浏览器,它想做什么事情肯定不会告诉你的。
搜狗软键盘的脚本错误触发了浏览器的window.onerror事件捕获,刚好我们拦截了所有异常捕获,这也是为何大多数的网站【百度、腾讯、微博】等平台上面使用密码框都没有发现异常的原因。
解决方案之一(IE低版本模式)
由此可见,这个软键盘是通过注入的js调用浏览器内核,内核调用搜狗输入法实现的。经过对浏览器植入脚本的分析,我们可以重写搜狗浏览器注入脚本对象,初始化一个空对象,让它自动失效,这样就能彻底屏蔽掉搜狗浏览器的软键盘,不需要css,也不需要设置里面去关闭。
直接贴代码:
window.__sogou_secure_input ={};
window.__sogou_secure_input.check = function() {};
以上代码放到网站的脚本文件里面就行了,比如common.js
如果还不行呢?那就加一个异步处理(setTimeout)或者放到head标签里面。
解决方案之二(IE11)
参考下面这篇测试搜狗浏览器的经验进行处理的方法如下:
css文件中添加以下样式
#sogou_secure_inputs_container{display:none;}
解决方案之三(Chrome模式)
参考下面这篇测试搜狗浏览器的经验进行处理的方法如下:
css文件中添加以下样式
input::-webkit-input-safebox-button{display:none;}