Firefoxのフォーカス

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

前提条件として、

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

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

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

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

silog - memo/firefox/keyconfig
http://white.s151.xrea.com/wiki/index.php?memo%2Ffirefox%2Fkeyconfig

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

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

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

userChrome.js - Mozilla Firefox まとめサイト
http://firefox.geckodev.org/index.php?cmd=read&page=userChrome.js&word=user

概要によると、

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の時は、タブを切り替えてもフォーカスは、検索バーに行くことは無かった。

Posted at : 2008-12-23 13:43:23 / Category : none

Comments

まだコメントはありません / No comment.

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (240424 と入力してください / Please input 240424.)