Home > 日記 > 覚書:Firefoxのキー入力抑止とか

覚書:Firefoxのキー入力抑止とか

  • Posted by: hesuko
  • 2009年6月13日 00:02
  • 日記
  •  

先ず前提条件の振り分けとか。
拡張機能ウィンドウとかで、特定拡張機能のフォーカスを認識するにあたって。

イベントリスナ/イベントハンドラの設定:

拡張機能ウィンドウのオーバーレイjavascriptファイルの最終行に
window.addEventListener("load",AddonName.init, false);
「AddonName.init」は適宜自分の関数へ入れ替えしてください。
[window.addEventListener]超重要。良く出ます。
["load"]はハンドラ。
最終行に記述するのはプログラマの嗜み(えー

んで

AddonName={
   init:function(event){
   document.getElementById("extensionsManager").addEventListener("select", AddonName.lock,false);
   },
}

とか。
基本的にはDOMインスペクタでどの信号がどのElementByIdにいるか調査する形になる。
っていうか方法がそれしかない。

var element = document.getElementById("extensionsView");
IDが「extensionsView」と言うツリーの中身を取得、んで

element.getAttribute("last-selected")==AddonID
条件判定式用。AddonIDはstring、install.rdfに記載した個別アドオンID。
これで特定拡張機能にフォーカスが当たっている時のみに処理を掛けれる。
イベントリスナを解しての操作が可能と。


総論:

<A id=id_a>
  <B href="test" data="hoge" />
</A>

IDが設定されていないモノの値をどうこうするには

・取得するなら
上層部のIDをdocument.getElementByIdで取得し
その中をgetAttributeで属性検索、返り値で取得。
var element = document.getElementById("id_a");
element.getAttribute("href");
結果、"test"が取得できる。

・変更するなら
var element0 = document.getElementById("id_a");
var element1 = getAnonymousElementByAttribute(element0,"href","test");
element.setAttribute("data","hogehoge");
これでdata属性の中身が上書きされた。

元々IDが無いものを書き換えするので、なかなかに強引な手法ではあるが
わかってしまえばこっちのもの、と言う感じで扱える関数である。
尚、Firefoxで、この辺の立ち回りは結構重要な局面に遭遇する事が多く、デフォルトで

<A id=id_a>
  <B href="test" data="firefox.うんたらかんたらしますよ(event)" />
</A>

とか記述されてたら、どうしますか?
上書きされてしまうのでここの関数が使い物にならなくなってしまいます。
すなわち、他の拡張機能に迷惑を掛ける。
このjavascriptファイルのグローバル変数として一つvarを定義し、
先ほどのinitなりで一度この中身を保管しておくと問題ないと思います。

element.getAttribute("last-selected")==AddonIDで現在選択されている拡張機能IDが取得・比較できるので
この辺を参考にしてif文を構築してくださいな。



Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://sm.2-d.jp/mt/mt-tb.cgi/270
Listed below are links to weblogs that reference
覚書:Firefoxのキー入力抑止とか from SiteModifyBlog

Home > 日記 > 覚書:Firefoxのキー入力抑止とか

Return to page top