タグ

ブックマーク / www.xuldev.org (14)

  • SCRAPBLOG : Firefox への Feedly Cloud 用フィードリーダー追加

    Google Reader から Feedly Cloud へ乗り換えしたので、 Firefox のブックマークメニューの「このページを購読…」からフィードを追加できるようにした。 手順 (1) Firefox で Feedly Could を開く。 (2) Feedly Could を開いたタブで、スクラッチパッド(「ツール」→「Web 開発」→「スクラッチパッド」)を開く。 (3) 以下のコードを貼り付けて、「実行」する。 navigator.registerContentHandler( "application/vnd.mozilla.maybe.feed", "http://cloud.feedly.com/#subscription/feed/%s", "feedly" ); (4) タブ内の上部に「”feedly” (cloud.feedly.com) をフィードリーダーとし

  • SCRAPBLOG : XUL Document をタブで開いたときにタブにアイコンを表示する

    teramako
    teramako 2012/01/01
  • SCRAPBLOG : nsITransactionManager を使ったトランザクション管理

    拡張機能やXULアプリにて、ユーザの操作に対する「元に戻す」「やり直し」機能を実装する際、 nsITransactionManager が便利です。例えば Firefox 体ではブックマークの追加/削除/移動などが nsITransactionManager によってトランザクション管理されています。 基形 ユーザがボタンをクリックすると、金額が加算されて合計金額がテキストボックスに表示されるような、簡単なXULアプリを作ってみます。 <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" title="Bank" onl

    teramako
    teramako 2011/09/12
    これイイ! そいえばPlacesUtilsもbeginBatchとかあったような。このインターフェースを使ってるのかな
  • SCRAPBLOG : xul:prefwindow の設定ダイアログにヘルプボタンを表示する

    Firefox 体の「オプション」ダイアログのように、 xul:prefwindow 要素で作った設定ダイアログに、「ヘルプ」ボタンを表示したい。 xul:prefwindow の buttons 属性? xul:prefwindow 要素の buttons 属性の説明を読むと、表示したいボタンをカンマ区切りで指定する、と書いてあるので以下のようにしてみた。しかし、OKボタン・キャンセルボタンは表示されるものの、ヘルプボタンは表示されなかった。 <prefwindow buttons="accpet,cancel,help"> ちなみに、 xul:dialog 要素のダイアログであれば、上記方法でもヘルプボタンが表示される。 xul:prefpane の helpURI 属性? xul:prefpane 要素の helpURI 属性の説明を読むと、設定用パネルに関連付けられた URI を

    teramako
    teramako 2011/02/01
  • SCRAPBLOG : ウィンドウがアクティブ(最前面に表示されている)かどうかの判定方法

    あるウィンドウが Firefox 以外のアプリケーションのウィンドウも含めた中で最前面に表示されているかどうかを判定する方法。 Firefox 3.6 の場合 最前面に表示されたウィンドウにはXULドキュメントのルート要素に active 属性(値は “true”)が自動的に付加される (参考:nsGlobalWindow.cpp)。 var isActive = document.documentElement.hasAttribute("active"); ちなみに、最初これを教わったときに最前面にあるブラウザウィンドウを DOM Inspector で一生懸命調べたものの active 属性なんてものは無かったが、その場合最前面のウィンドウは DOM Inspector になるので、無くて当然である。 Firefox 4.0 の場合 なぜか active 属性を付加する仕組みが削除さ

    teramako
    teramako 2011/01/31
    window要素の"active"属性と :-moz-window-inactive 擬似クラス
  • xuldev.org :: Slides

    Mozilla 勉強会@東京 7th Android版Firefoxアドオン開発事始め Mozilla 勉強会@東京 5th Vertical Toolbar 拡張機能の紹介 Firefox Developers Conference 2010 Add-ons Builder を使った Jetpack 開発の手引き (後半) with アカツカダイスケさん Tab Scope 1.0 ~CSS transitionで魅せるXUL拡張機能~ Mozilla 勉強会@北海道 Jetpack SDK 0.5 開発デモ Mozilla 勉強会@東京 2nd Jetpack SDK 0.2 開発デモ Jetpack SDK 0.2 開発デモ Flat Bookmarks 1.0 の紹介 Flat Bookmarks 1.0 の紹介 Firefox Developers Conference 2009

  • SCRAPBLOG : persist 属性による属性値の永続化

    属性の永続化とは? XUL要素に persist 属性によって値を保存したい属性の名前を指定しておくと、その属性の値が次回XULドキュメントをロードした時に復元される。保存された属性の値は Firefox 終了時にローカルファイル(プロファイルフォルダ下の localstore.rdf)へ書き出されるので、 Firefox を終了しても保持される。 XULアプリで何らかの設定値を保存するには、 Preferences の仕組みを使って保存する方法が有名だが、UIの見た目に関する設定値(ウィンドウの位置や大きさ、ツールバーのボタンの並び順など)は属性の永続化によって保存される場合が多い。 具体的な例 Firefoxのウィンドウの位置や大きさは、前回開いたときの状態が復元される。これは属性の永続化によって実現されている。 browser.xul のソースを見ると、以下のように persist

    teramako
    teramako 2010/09/30
    document.persist メソッド
  • SCRAPBLOG : XPCOM サービスへの頻繁なアクセスを効率化するテクニック

    拡張機能や XUL アプリにて、 JavaScript から特定の XPCOM サービスを頻繁に使用するケースがよくあります。そのような場合に処理やソースコードを効率化するためのテクニックをいくつか紹介します。ここでは、例として nsIObserverService を頻繁に利用するケースを想定します。なお、Cc は Components.classes, Ci は Components.interfaces への参照です。 方式1: 毎回 XPCOM サービスを呼び出す 特に工夫をしない場合、以下のように XPCOM サービスを利用するたびに毎回そのスコープ内で呼び出し手続きを行うことになります。 var MyExtension = { init: function() { var observerSvc = Cc["@mozilla.org/observer-service;1"].

  • SCRAPBLOG : はじめての Jetpack SDK 0.2

    Jetpack SDK を展開したフォルダの下の「packages」フォルダ内に個々のパッケージのルートフォルダがあり、その下には「package.json」という名前のマニフェストファイルがあります。「README.md」はパッケージの詳細を記述するためのドキュメントファイルで、必要に応じて配置します。「lib」フォルダ内には、パッケージのメインプログラムや自作ライブラリのプログラムを格納します。 パッケージの作成 それでは、「C:jetpack-sdk-0.2packages」フォルダ下に hello-world パッケージ用の「hello-world」フォルダを作成します。次に、パッケージのルートフォルダ内にマニフェストファイル「package.json」を作成します。マニフェストファイルにはパッケージに関するメタ情報を JSON 形式で記述します。拡張機能を作成したことのある方であ

  • SCRAPBLOG : xul:filefield

    ユーザが選択したファイルやフォルダを表示するような設定UIを作る場合には xul:filefield 要素が便利である。例えば Firefox のダウンロード先フォルダの設定UIには xul:filefield 要素が使われている。 XUL filefield 要素を使うためには、以下の2つのスタイルシート参照する処理命令を追加する必要がある。2つめのスタイルシートは Firefox 専用である。 <?xml-stylesheet href="chrome://mozapps/content/preferences/preferences.css"?> <?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?> 多くの場合、 filefield 要素はファイルを選択するためのボタンとセットで使用され

    teramako
    teramako 2009/03/25
    見たことない要素だと思ったら、Fx独自要素なのか
  • SCRAPBLOG : Firefox 3.1 の新しいドラッグ&ドロップ API の基本的な使い方 (その1~イベントハンドラの追加)

    サンプルコード (HTML) 2つの div 要素を配置し、一方をドラッグ元、もう一方をドロップ先とする。 ドラッグ元となる div 要素には、「draggable=”true”」属性をセットしなければならない。ただし、リンク(a 要素)や画像 (img 要素)などは、「draggable=”true”」を指定しなくても自動的にドラッグ可能となる。 ドラッグ元の要素には ondragstart, ondrag, ondragend の3つのイベントハンドラを追加し、ドロップ先の要素には ondragenter, ondragover, ondragleave, ondrop の4つのイベントハンドラを追加する。ただし、必要最低限のドラッグ&ドロップを実装するのであれば、 ondrag, ondragend, ondragleave は省略しても問題ない。 <html> <head> <ti

  • SCRAPBLOG : JavaScript 関数と XPCOM メソッドの例外ハンドリング

    JavaScript の関数がスローする例外の内容を知るには、例外オブジェクトの値そのものを調べる。 XPCOM のメソッドがスローする例外の内容を知るには、例外オブジェクト (nsIXPCException オブジェクト) の result プロパティなどを調べる。 例えば以下のような純粋な JavaScript の関数があるとすると、 const Cr = Components.results; function test() { throw Cr.NS_ERROR_FAILURE; } 関数実行時に catch したオブジェクトの値そのものを調べることで例外の内容を知ることができる。 try { test(); } catch (ex if ex == Cr.NS_ERROR_FAILURE) { alert("Failed!"); } 一方、上記の関数 test と同じ内容のメソッ

    teramako
    teramako 2008/06/15
    nsIXPCExceptionオブジェクトとComponents.Exceptionコンストラクタ
  • SCRAPBLOG : _base_href 属性

    <html> <body> <base href="http://www.mozilla.com/"> <a href="/en-US/firefox/"><img src="/img/firefox-title.png"></a> </body> </html> 上記テストケースのように、 <body> 内に <base> を配置した HTML を Firefox で開くと、 <a> や <img> に対して _base_href という属性が勝手に付加される。実際に DOM インスペクタにて確認可能。 もちろん <a> と <img> だけでなく、 <object> や <embed> も影響あり。

    teramako
    teramako 2008/02/12
  • SCRAPBLOG : ブックマークツリーの右クリックメニュー実装方式

    Trunkへ正式に搭載されたことだし、そろそろPlacesの仕組みとかを勉強していこうかと思ったが、まず最初に気になるツリーの右クリックメニューの実装方式を見て一安心した。 chrome://browser/content/places/placesOverlay.xul を見ればわかるとおり、右クリックメニューが普通の popup 要素と menuitem 要素の集まりで実装されているのだ。これなら拡張機能が右クリックメニューへ独自のメニューを追加したければ、通常の XUL のオーバーレイで実現できる。 というのも、 Firefox 2 でのブックマークツリーの右クリックメニューは、右クリックでしたときの popupshowing イベント発生時に BookmarksCommand.createContextMenu という JavaScript 関数がすべての menuitem 要素を

  • 1