Sex*_*ast 4 javascript browser events ctrl
我目前正在设计一个提供自定义搜索功能的网页.由于这可能会干扰浏览器提供的默认搜索栏CTRL- F,我们正在禁用该事件,以便不会弹出默认搜索栏,而是显示我们的搜索栏.
问题是,在Firefox和Internet Explorer中,与Chrome或Safari或Opera不同,搜索栏在所有选项卡中都是可共享的.因此,如果我在其他选项卡中,请执行CTRL- F弹出默认搜索栏,现在跳转到此页面,搜索栏仍然存在,这完全违背了我们的目的.
我知道这听起来不可能,但是,有没有办法杀死默认搜索栏,也就是说,通过JavaScript完全隐藏它?然后,当我们检测到用户正在进入我们的页面时,我们可能会这样做.
如果不可能,那么有什么方法可以禁用特定元素的默认搜索,比如说contenteditable div?这样,虽然CTRL- F迭代单词的页面,每按一次突出显示每个实例,ENTER该元素中的所有单词都被完全忽略了?
小智 6
您无法通过JavaScript控制页面中其他选项卡的行为或内容,因此无法实现.
基本上:实现这一目标的唯一方法是分叉源代码并创建自己的浏览器版本,为搜索栏提供自己的功能.对于IE,您可以为Web控件创建一个包装,例如.Net并分发,但在这里您将无法控制IE版本.
这将是一个有点极端的IMO,但在vanilla版本中,你无法绕过这个并且可以理解,因为这会引发一大堆安全问题.
扩展似乎是一种替代方法,但它们也受到安全保护,并且在这方面将受到限制,因此您将不会比以下更进一步 -
您可以覆盖ctrl+ f但这只能在运行脚本的选项卡上运行(我强烈反对在未经用户批准的情况下执行此操作,因为这会更改默认的浏览器行为).
举例来说:
document.onkeydown = function(e) {
/// for IE
e = e || event;
var keyCode = (window.event) ? e.which : e.keyCode;
/// check ctrl + f key
if (e.ctrlKey === true && keyCode === 70) {
e.preventDefault();
console.log('Ctrl + f was hit...');
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:对于Mac command键,这里已经回答:
如何通过JavaScript捕获Mac的命令键?.
看起来你已经在监听Ctrl+ F按键并禁止默认行为.这是你可以去的.
换句话说,在回答你的问题是很简单NO.
查找页面搜索栏是浏览器chrome的一部分; 你无法通过DOM或其他方式访问它.浏览器不提供任何类型的API,允许页面以任何方式控制页面查找功能.您无法关闭已打开的查找栏.你不能让它被打开.您无法读取或控制搜索输入框中的内容.
您可以编写一个以某种方式控制页面搜索功能的扩展程序,但显然您必须说服用户安装它,并且您需要为每个要定位的浏览器使用一个.
坦率地说,每当我看到有人要求禁用或干扰默认浏览器行为时,通常都是误导,糟糕的主意.您可能认为您的搜索功能非常棒(毕竟,您编写了它),但您可能会以某种意想不到的方式限制用户.(如果没有看到确切的用例,我无法肯定地说,但这是一个很好的一般规则.)
如果您试图打败标准浏览器功能,那么您可能做错了.
| 归档时间: |
|
| 查看次数: |
5088 次 |
| 最近记录: |