shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:2931回复:7

firefox编辑框焦点

楼主#
更多 发布于:2010-12-12 14:26
我在keyconfig那里定义了快捷键 d 为关闭当前标签页(因为关闭当前标签页是使用频率最高的一个操作,所以只定义为 d)。但是有一个问题,当光标处于编辑框的时候,在键盘键入d只是在编辑框中输入d,并不是执行关闭当前标签页的操作。所以当我从当前A标签切换到另外一个标签B的时候,如果B标签的光标处于编辑框,快捷键d就无法关闭B标签。

有没有一个办法,当从一个标签A切换到另外一个标签B时,无论标签B的光标状态状态是怎么样,也不要使B的光标状态处于编辑框,这样在B页面,我执行快捷键d就可以关闭B标签。
hoolooday
火狐狸
火狐狸
  • UID26508
  • 注册日期2008-10-02
  • 最后登录2015-05-22
  • 发帖数173
  • 经验11枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
1楼#
发布于:2010-12-12 14:26
这么喜欢快捷键,可以尝试下vimperator或者Dactyl.都是不错的
可以很好的解决你的问题
<gi> 进入焦点.
<ESC>退出模式.(当然可以退出焦点了.)
<d>关闭标签
hoolooday
火狐狸
火狐狸
  • UID26508
  • 注册日期2008-10-02
  • 最后登录2015-05-22
  • 发帖数173
  • 经验11枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
2楼#
发布于:2010-12-12 14:26
hoolooday:这么喜欢快捷键,可以尝试下vimperator或者Dactyl.都是不错的
可以很好的解决你的问题
<gi> 进入焦点.
<ESC>退出模式.(当然可以退出焦点了.)
<d>关闭标签
回到原帖

==========
另外最新的Dactyl.可以实现你最后的需求...
设置要不要把切换到标签,就把焦点交到页面上去
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2010-12-12 14:26
hoolooday
==========
另外最新的Dactyl.可以实现你最后的需求...
设置要不要把切换到标签,就把焦点交到页面上去
回到原帖


设置要不要把切换到标签,就把焦点交到页面上去,这个有没有相应的JS脚本,我要的正是这个,但是我不想用vimperator跟Dactyl,
我只需要keyconfig+JS谢谢
minfox
小狐狸
小狐狸
  • UID34728
  • 注册日期2010-11-30
  • 最后登录2011-09-27
  • 发帖数30
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2010-12-12 14:26
需求比较高的,都用DACTYL去了,它有一个set选项strictfocus

…………估计只有自己研究VIMP和DACTYL的源码,把这个JS剥离出来。
firefox_userA
非常火狐
非常火狐
  • UID8049
  • 注册日期2005-08-17
  • 最后登录2022-11-05
  • 发帖数609
  • 经验46枚
  • 威望0点
  • 贡献值8点
  • 好评度2点
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";
}
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2010-12-12 14:26
楼上的脚本不起作用。我把鼠标焦点放到这个论坛的编辑框上,从另外的标签切换到这个标签的时候,这个鼠标的光标仍然是停留在这个编辑框上。
firefox_userA
非常火狐
非常火狐
  • UID8049
  • 注册日期2005-08-17
  • 最后登录2022-11-05
  • 发帖数609
  • 经验46枚
  • 威望0点
  • 贡献值8点
  • 好评度2点
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";
}
游客

返回顶部