Firefoxのフォーカス

タブを移動したときにフォーカスが意図しない場所に戻ってしまう。 具体的には以下のことを行うと、フォーカスが検索バーに行ってしまう。

前提条件として、

  • 検索バーから検索したときに新しいウィンドウが開くようにする(Tab Mix Plusを使用)。

この状態で、検索バーから検索をすると、検索結果が新しいタブに開く。 開いたタブから元のタブに戻ると、フォーカスが検索バーにある(ここが困る)。

どのように困るかというと、keyconfigを使って「Ctrl + ←、→」でタブの移動を 割り当てていると、フォーカスが検索バーに行ってしまうことによって、それ以降の タブの移動が効かなくなる点が困る。

keyconfigを使った方法

コンテンツにフォーカスを合わせるためのkeyconfigの設定は以下のページで紹介されている。

silog - memo/firefox/keyconfig

これでもいいのだけど、わざわざキーを押すのが面倒なわけで。。。

userChrome.jsを使った方法

ということで、最初はFirefoxのソースコード自体を弄ってやろうかと思ったけど、 それは断念して、userChrome.jsを使って対応することにした。

userChrome.jsについては、以下のページを見るとわかる。

userChrome.js - Mozilla Firefox まとめサイト

概要によると、

JavaScriptを通して、Firefoxのインターフェイスを簡単に改造するための拡張です。

ということらしい。 感覚的には、GreaseMonkeyをChrome特権(Firefox本体と同じ権限)で動かした感じなのかな。

適当に導入して、ユーザスクリプトとして以下のスクリプトを入れる。

// ==UserScript==
// @name           auto focus content
// @namespace      http://yasuharu.net
// @include        chrome://browser/content/browser.xul
// ==/UserScript==
function focus_content(event)
{
	setTimeout(function(){ gBrowser.selectedTab.linkedBrowser.contentWindow.focus() } , 0);
}

(function()
{
	gBrowser.tabContainer.addEventListener("TabSelect", focus_content, false);
})();

これで、期待通りの動作をさせることができた。

何故このようにする必要があったか

まぁ、何でこれが必要かというと、Sleipnirの時の動作をまねたかったわけです。 Sleipnirの時は、タブを切り替えてもフォーカスは、検索バーに行くことは無かった。

参考ページ

 
computer/software/firefox/firefoxのフォーカス問題.txt · 最終更新: 2008/12/23 13:57 by yasuharu
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki