您的位置首页百科知识

如何彻底屏蔽(关闭)搜狗浏览器自带的软键盘

如何彻底屏蔽(关闭)搜狗浏览器自带的软键盘

的有关信息介绍如下:

如何彻底屏蔽(关闭)搜狗浏览器自带的软键盘

为何要关闭搜狗浏览器密码框自带的软键盘呢?主要有下面两点原因:

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;}