タグ

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

  • SCRAPBLOG : Jetpack SDK 0.4 で cfx コマンドのユーザ定義オプションを設定する

    Jetpack SDK 0.4 では、 cfx コマンド実行時に頻繁に使うオプションをあらかじめ local.json に記述しておき、 cfx コマンド実行時に簡単に呼び出すことが可能となりました。 cfx run のオプション Jetpack SDK では、拡張機能を動作確認するときに「cfx run」コマンドを用いますが、このとき、通常のインストール先とは異なる Firefox を起動して実行したい場合に「-b」オプションを付加したり、指定したプロファイルから起動したい場合「-P」オプションを付加します。以下は testuser というプロファイルで Firefox 3.7 上で拡張機能の動作確認をする例です。 cfx run -a firefox -b "%ProgramFiles%Mozilla Firefox 3.7firefox.exe" -P "%appdata%Mozil

    Cherenkov
    Cherenkov 2010/09/16
    cfx run バックスラッシュはエスケープ local.json --use-config
  • 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 形式で記述します。拡張機能を作成したことのある方であ

    Cherenkov
    Cherenkov 2010/04/12
    参考になる。simpleDialog.alert デバッグ
  • SCRAPBLOG : nsIScriptSecurityManager で危険なURIを除外する

    nsIScriptSecurityManager の checkLoadURI や checkLoadURIStr メソッドによって、ある URI のページからリンクされる別の URI がポリシーに沿ったものであるかどうかを判別することができる。 以下のサンプルは、現在のURI (sourceURI) に対して、リンク先のURI (targetURI) が javascript: や data: プロトコルで表された危険が潜む可能性のある URI であるかどうかをテストしている。 var sourceURI = "http://www.example.com/"; var targetURI = "javascript:alert('Blah');"; var SECMAN = Components.classes["@mozilla.org/scriptsecuritymanager;1

    Cherenkov
    Cherenkov 2010/01/11
    urlSecurityCheck
  • SCRAPBLOG : nsIWebBrowserPersist の基本的な使い方 (1) ~ 基本形

    指定したURLのデータをダウンロードし、指定したパスのファイルへと保存するだけの簡単なコードを作る。 まずは URL 文字列から nsIURL オブジェクトを、ファイルパスから nsILocalFile オブジェクトを生成する。 const URL_SPEC = "http://www.mozilla.com/img/firefox-title.png"; const FILE_PATH = "C:firefox-title.png"; // make nsIURL var url = Cc["@mozilla.org/network/standard-url;1"].createInstance(Ci.nsIURL); url.spec = URL_SPEC; // make nsILocalFile var file = Cc["@mozilla.org/file/local;1"].

    Cherenkov
    Cherenkov 2010/01/08
    urlからファイル保存 saveURI saveChannel nsIWebBrowserPersist nsIIOService nsIChannelnsIHttpChannel
  • SCRAPBLOG : nsIWebBrowserPersist の基本的な使い方 (4) ~ POST メソッド

    HTTP の POST メソッドで Web サーバへ要求し、その回答結果をファイルへ保存する。 ほとんど nsIHttpChannel の使用がメインですので、ファイル保存する場合以外にも応用可能です。 また、サンプルコードは nsIWebBrowserPersist の基的な使い方 (1) ~ 基形 をベースとしており、一部省略しています。 saveURI の場合 saveURI の第4引数 aPostData を使えばできるはずだが、現在調査中… saveChannel の場合 例によって nsIURL オブジェクトから nsIHttpChannel オブジェクトを生成する。 // make nsIHttpChannel var ioSvc = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);

  • SCRAPBLOG : Firefox を再起動する

    Firefox 3 以前 Firefox を再起動するとき、 Firefox 3 までは以下のようなコードを書く必要があった。 var appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup); appStartup.quit(appStartup.eRestart | appStartup.eAttemptQuit); ただし、上記コードでは Firefox 終了直前に「開いているタブを保存して次回起動時に復元しますか?」の確認ダイアログを表示する設定になっていた場合などに、ダイアログを表示せずに強制的に終了してしまう欠点がある。そのような場合でもちゃんとダイアログを表示させるようにするためには、 chrome://mozapps/content/extensions/extens

    Cherenkov
    Cherenkov 2010/01/06
    alert restart()
  • SCRAPBLOG : Webページの拡大率を取得する

    拡張機能などから、ブラウザのコンテンツエリアに表示された Web ページの拡大率(画像も含めたズームイン・ズームアウトによる拡大率)を調べる。 以下、 browser.xul へオーバーレイした状態を想定。 Firefox 3.5 以前 nsIMarkupDocumentViewer::fullZoom で取得可能。 var zoomFactor = gBrowser.mCurrentBrowser.markupDocumentViewer.fullZoom; Firefox 3.6 以降 nsIDOMWindowUtils::screenPixelsPerCSSPixel でも取得可能。 var win = window.content; var winUtils = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci

    Cherenkov
    Cherenkov 2010/01/06
    拡大率 zoom nsIMarkupDocumentViewer::fullZoom nsIDOMWindowUtils::screenPixelsPerCSSPixel
  • SCRAPBLOG : [Places] nsINavHistoryResultNode からブックマークの各種情報を取得する

    [Places] ビューと nsIPlacesView インタフェースから引き続き、 Places データベースからの検索結果 (nsINavHistoryResult オブジェクト) から得たブックマークのノード (nsINavHistoryResultNode オブジェクト) について、各種情報を取得する。 ブックマークの種類 あるノードの種類を調べる、例えばフォルダかどうかを調べるには、 type プロパティを調べる。 if (node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER) alert("The node is a folder."); PlacesUtils には nodeIs* メソッドがたくさん用意されているので、こちらを使った方が便利。 if (PlacesUtils.nodeIsFolder(node)

    Cherenkov
    Cherenkov 2009/06/11
    Places
  • SCRAPBLOG : createElement してから appendChild するまでの間のプロパティ変更

    下記の value プロパティ変更は効果がない。 var elt = document.createElement("textbox"); elt.value = "It works!"; document.documentElement.appendChild(elt); 代わりに setAttribute を使うか、 var elt = document.createElement("textbox"); elt.setAttribute("value", "It works!"); document.documentElement.appendChild(elt); appendChild してからプロパティを変更する。 var elt = document.createElement("textbox"); document.documentElement.appendChild(

  • SCRAPBLOG : All-in-One Gestures のマウストレイルを改造

    All-in-One Gestures のマウスジェスチャ実装を改造し、マウスポインタを水平または垂直に移動させた場合、すぐ隣り合う座標へ新しく aioTrailDot 要素を配置するのではなく、現在の aioTrailDot 要素の大きさを縦や横に広げていくことで直線を描画するようにしてみた。下図の右が通常の実装方式、左が上記の修正を施したものである。わかりやすくするために各 aioTrailDot 要素へ outline: 1px solid blue で枠を付けている。 描く曲線にもよるが、これでジェスチャ中のメモリ消費量が削減できると思う。

  • SCRAPBLOG : マウストレイルの実装

    マウストレイルとは マウスを右クリックして動かすと、その軌跡を表示する機能。右クリックを放すと軌跡は消滅する。 All-in-One Gestures の場合 DOM のレベルで実現している。右クリックの mousedown でジェスチャを開始すると、HTML の body 要素直下に aioTrailContainer 要素が生成される。その後、マウスを動かすにしたがってサイズが1×1の aioTrailDot 要素を複製して aioTrailContainer 下に appendChild する。この aioTrailDot 要素はサイズが1×1で、マウスポインタと同じ座標へ絶対配置されており、背景色がある。この aioTrailDot 要素を並べることで、あたかも一のつながった線に見えるようになる。 この方式には以下のような問題点がある。 ・縦長のページでマウストレイルを行うと重た

    Cherenkov
    Cherenkov 2009/06/06
    絵を描く/軌跡 参考になります。
  • SCRAPBLOG : [Places] ビューと nsIPlacesView インタフェース

    ブックマークや履歴といった Places データベースに保持されている内容は、ツリー/メニュー/ツールバーといった色々な GUI ウィジェット(「places view」あるいは単に「ビュー」と呼ぶ)として実際に目に見える形で表示される。各ビューはいずれも XBL にて nsIPlacesView インタフェースで定められた各種プロパティ・メソッドを実装しており、ビューの違いを意識することなくコントローラ側で各種機能を実装できる設計となっている。 Places ではデータベースへの問い合わせ結果を所定のインタフェースを介してビューに結びつけて表示させる。問い合わせ結果全体を表す nsINavHistoryResult オブジェクトからは、個々の「行」に対応する nsINavHistoryResultNode オブジェクトへアクセス可能である。このオブジェクトを「result node」ある

    Cherenkov
    Cherenkov 2009/06/01
    サイドバーブックマーク
  • SCRAPBLOG : 2007 : 5月

    Cherenkov
    Cherenkov 2009/05/26
    ブックマークツリーの右クリックメニュー実装方式/ contextMenu
  • xuldev.org :: userChrome.js scripts

    Language: English | Japanese userChrome.js Scripts A collection of scripts for userChrome.js extension. Some scripts require userChrome.js 0.8 + Sub-Script/Overlay Loader v3.0 to hook on sub windows with Greasemonkey-style metadata. Tab Preview Displays a real-time thumbnail preview when hovering mouse on a tab. Download

  • SCRAPBLOG : [userChrome.js] 軽量マウスジェスチャで利用可能なスクリプト集

    [userChrome.js] 軽量マウスジェスチャで利用可能なスクリプト 「○○をジェスチャにしたいんだけど、userChrome.jsには何て書けばいいの」といった話題はこちらでコメントお願いします。 ナビゲーション // 戻る document.getElementById("Browser:Back").doCommand(); // 進む document.getElementById("Browser:Forward").doCommand(); // 更新 document.getElementById("Browser:Reload").doCommand(); // 更新(キャッシュを無視) document.getElementById("Browser:ReloadSkipCache").doCommand(); // ホーム document.getElementB

    Cherenkov
    Cherenkov 2009/03/29
    サンプル集 / gBrowser
  • SCRAPBLOG : contenteditable 属性

    position: absolute; な要素に対して Firefox 3 で導入された contenteditable="true" 属性を付加すると、内容の編集以外にもその要素をドラッグ&ドロップで位置を変更したり、リサイズしたりすることが可能。 テストケース Firefox 3 でのセキュリティに関する変更 (Web ページからの chrome コンテントへのアクセスがデフォルトで制限される) 影響で、 ScrapBook の付箋アノテーション機能が壊れていた。 chrome.manifest で contentaccessible フラグを使えばこの制限を解除できるが、せっかくなのでこの機会に前から考えていた contenteditable 属性を使って付箋アノテーション機能を改善してみた。

  • 1