阅读:2965回复:7
firefox编辑框焦点
我在keyconfig那里定义了快捷键 d 为关闭当前标签页(因为关闭当前标签页是使用频率最高的一个操作,所以只定义为 d)。但是有一个问题,当光标处于编辑框的时候,在键盘键入d只是在编辑框中输入d,并不是执行关闭当前标签页的操作。所以当我从当前A标签切换到另外一个标签B的时候,如果B标签的光标处于编辑框,快捷键d就无法关闭B标签。
有没有一个办法,当从一个标签A切换到另外一个标签B时,无论标签B的光标状态状态是怎么样,也不要使B的光标状态处于编辑框,这样在B页面,我执行快捷键d就可以关闭B标签。 |
|
1楼#
发布于:2010-12-12 14:26
这么喜欢快捷键,可以尝试下vimperator或者Dactyl.都是不错的
可以很好的解决你的问题 <gi> 进入焦点. <ESC>退出模式.(当然可以退出焦点了.) <d>关闭标签 |
|
2楼#
发布于:2010-12-12 14:26
|
|
3楼#
发布于:2010-12-12 14:26
|
|
4楼#
发布于:2010-12-12 14:26
需求比较高的,都用DACTYL去了,它有一个set选项strictfocus
…………估计只有自己研究VIMP和DACTYL的源码,把这个JS剥离出来。 |
|
5楼#
发布于:2010-12-12 14:26
仅仅是这个的话,要求也不算高,我用GreaseMonkey的脚本实现了一个,代码见下。
其中将当前的焦点控件失去焦点:document.body.focus()不起作用,只能用点其他办法。 也推荐pentadactyl,比如这种用法好很多 unfocus.user.js ================== // ==UserScript== // @name FocusOnNothing // @namespace FocusOnNothing // @description 切换至页面时不聚焦在任何元素上 // @include * // ==/UserScript== var eFocus=document.createElement("input"); window.addEventListener("focus", _handleFocus, false); function _handleFocus(){ if(!document.activeElement.id) return; eFocus.type="input"; document.activeElement.parentNode.insertBefore(eFocus,document.activeElement.nextSibling); eFocus.focus(); eFocus.type="hidden"; } |
|
6楼#
发布于:2010-12-12 14:26
楼上的脚本不起作用。我把鼠标焦点放到这个论坛的编辑框上,从另外的标签切换到这个标签的时候,这个鼠标的光标仍然是停留在这个编辑框上。
|
|
7楼#
发布于:2010-12-12 14:26
改了一下,可以了。但仍然有些页面的编辑控件无法切换,原因未知
// ==UserScript== // @name FocusOnNothing // @namespace FocusOnNothing // @description 切换至页面时不聚焦在任何元素上 // @include * // ==/UserScript== var eFocus=document.createElement("input"); window.addEventListener("focus", _handleFocus, false); function _handleFocus(){ if(document.activeElement instanceof HTMLBodyElement) return; eFocus.type="input"; document.activeElement.parentNode.insertBefore(eFocus,document.activeElement.nextSibling); eFocus.focus(); eFocus.type="hidden"; } |
|