<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web scratch &#187; userChome.js</title>
	<atom:link href="http://efcl.info/category/firefox/userchome-js/feed/" rel="self" type="application/rss+xml" />
	<link>http://efcl.info</link>
	<description>フリーソフトやFirefoxなどについて、web全般なサイト</description>
	<lastBuildDate>Thu, 02 Sep 2010 13:23:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Greasemonkeyにデバッグ関数を追加するuserChrome.js</title>
		<link>http://efcl.info/2010/0612/res1754/</link>
		<comments>http://efcl.info/2010/0612/res1754/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 04:50:36 +0000</pubDate>
		<dc:creator>azu</dc:creator>
				<category><![CDATA[userChome.js]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[userChrome.js]]></category>

		<guid isPermaLink="false">http://efcl.info/?p=1754</guid>
		<description><![CDATA[以前、GreasemonkeyにGrowlのような通知を呼ぶ機能を加える「Dbus Notify」 &#124; Web scratchでGreasemonkeyから使える機能を増やせたら楽しそうと書いたと書きましたが、callo [...]]]></description>
			<content:encoded><![CDATA[<p>以前、<a href="http://efcl.info/2010/0606/res1708/">GreasemonkeyにGrowlのような通知を呼ぶ機能を加える「Dbus Notify」 | Web scratch</a>でGreasemonkeyから使える機能を増やせたら楽しそうと書いたと書きましたが、<a title="lackac's callout at master - GitHub" href="http://github.com/lackac/callout">callout</a>のソースを参考にGreasemonkeyスクリプトから使える関数を追加するuseChrome.jsを書いてみました。</p>
<p><script src="http://gist.github.com/428596.js?file=ore2Greasemonkey.uc.js"></script></p>
<p>このuserChrome.jsを読み込むと、</p>
<pre>fbug
Clipboard.get
Clipboard.set</pre>
<p>などのメソッドがGreasemonkeyスクリプトから使えるようになります。<br />fbugはconsole.logと同じ動作ですが、Firebugのウィンドウを開いていない状態(Firebugがオフ)でもFirebugのウィンドウを開いてからlogを出してくれる関数です。(元ネタは<a href="https://addons.mozilla.org/ja/firefox/addon/159546/">xqjs</a>)<br />Clipboardの方はjetpack prototypeからのコピペなのであんまり確認してません。</p>
<p>当たり前ですがこのuseChrome.jsをインストールしてない人の環境ではfbugなどの関数は使えないため、デバッグ目的か自分用のGreasemonkeyに使用する感じになると思います。<br />以下のようにデバッグ時のみ動く関数でラップしておけば、配布の際にDEBUG = false;とするだけでいいので楽かも知れません。</p>
<pre class="brush:javascript;">var DEBUG = true;

    log("なんとか");
    // DEBUG - http://gist.github.com/428596
    function log() {
        if ( typeof DEBUG != 'undefined' &amp;&amp; DEBUG ) {
            fbug.apply(this, arguments);
        }
    }</pre>
<p>何かもっと便利なデバッグ関数とか作れそうな気がします。<br />多分Greasemonkeyスクリプトからしか動かないようにできているので(あんまり自信ない)、そこまで危険な事は起こらないかと思いますが安全は保証できないので自己責任でというテンプレを入れておく。</p>
<dl>
<dt><strong>gist: 428596 &#8211; Greasemonkeyから使える関数を追加するuserChrome.js- GitHub</strong></dt>
<dd><a title="gist: 428596 - Greasemonkeyから使える関数を追加するuserChrome.js- GitHub" href="http://gist.github.com/428596">http://gist.github.com/428596</a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://efcl.info/2010/0612/res1754/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>拡張機能の有効状態を保存復元するuserChrome.js</title>
		<link>http://efcl.info/2010/0516/res1699/</link>
		<comments>http://efcl.info/2010/0516/res1699/#comments</comments>
		<pubDate>Sun, 16 May 2010 13:46:24 +0000</pubDate>
		<dc:creator>azu</dc:creator>
				<category><![CDATA[userChome.js]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[userChrome.js]]></category>
		<category><![CDATA[アドオン]]></category>
		<category><![CDATA[拡張機能]]></category>

		<guid isPermaLink="false">http://efcl.info/?p=1699</guid>
		<description><![CDATA[Firefoxの拡張機能(アドオン)の有効になってるか無効になってるかを記録して保存できます。またその保存したものから各アドオンの有効の有無を復元することができます。
例えば、Firefoxの動作がおかしいなと感じて、ど [...]]]></description>
			<content:encoded><![CDATA[<p>Firefoxの拡張機能(アドオン)の有効になってるか無効になってるかを記録して保存できます。<br />またその保存したものから各アドオンの有効の有無を復元することができます。</p>
<p>例えば、Firefoxの動作がおかしいなと感じて、どのアドオンが原因なのかを調べるときに、調べる前の有効状態を保存してから、一個一個アドオンを無効化して試し、原因となるアドオンが分かったら有効状態を復元して直ぐに元通りにできます。</p>
<p>似たような事を行えるVimperatorプラグインがあります。</p>
<dl>
<dt><strong>アドオンの有効無効状態を保存＆復帰できるプラギン &#8211; Death to false Web browser! &#8211; vimperatorグループ</strong></dt>
<dd><a title="アドオンの有効無効状態を保存＆復帰できるプラギン - Death to false Web browser! - vimperatorグループ" href="http://vimperator.g.hatena.ne.jp/nokturnalmortum/20100203/1265202872">http://vimperator.g.hatena.ne.jp/nokturnalmortum/20100203/1265202872</a></dd>
</dl>
<p>このスクリプトはuserMenu.jsが必要となるので、<a href="../2010/0512/res1692/">userChrome.jsでメニュー拡張を追加できる「userMenu.js」 | Web scratch</a>を読んでuserMenu.jsを導入してからChromeフォルダのtoolmenuフォルダに入れてください。</p>
<ul>
<li><a href="http://gist.github.com/raw/395918/ccd3c94c74fd552fa4f7069ef6a7f14c0a56bd7c/0001.%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3%E6%9C%89%E5%8A%B9%E7%8A%B6%E6%85%8B%E3%82%92%E4%BF%9D%E5%AD%98.S.js">0001.アドオン有効状態を保存.S.js</a></li>
</ul>
<address>アドオンの状態はextensions.scriptprefs.GM_modoki.%u30A2%u30C9%u30AA%u30F3%u6709%u52B9%u72B6%u614B%u3092%u4FDD%u5B58.extsDisable</address>
<p>に保存されています。(JSON.parseして使う。)</p>
<p>userMenu.jsに付属していた0000.アドオンリストをタブに表示.L.jsを元にしました。</p>
<p>他の参考にしたもの</p>
<p>nsIExtensionManagerで使えるもの<strong><a href="http://mxr.mozilla.org/mozilla/source/toolkit/mozapps/extensions/public/nsIExtensionManager.idl"><br />nsIExtensionManager.idl</a></strong></p>
<dl>
<dt>ダイアログの使い方。<br /><strong>nsIPromptService &#8211; MDC</strong></dt>
<dd><a title="nsIPromptService - MDC" href="https://developer-stage.mozilla.org/en/nsIPromptService#confirmEx%28%29">https://developer-stage.mozilla.org/en/nsIPromptService#confirmEx()</a></dd>
<dt>ダイアログの使い方。日本語ですがいろいろ抜けてます。</dt>
<dt><strong>Dialogs and Prompts &#8211; MDC</strong></dt>
<dd><a title="Dialogs and Prompts - MDC" href="https://developer-stage.mozilla.org/ja/Code_snippets/Dialogs_and_Prompts">https://developer-stage.mozilla.org/ja/Code_snippets/Dialogs_and_Prompts<br /></a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://efcl.info/2010/0516/res1699/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>userChrome.jsでメニュー拡張を追加できる「userMenu.js」</title>
		<link>http://efcl.info/2010/0512/res1692/</link>
		<comments>http://efcl.info/2010/0512/res1692/#comments</comments>
		<pubDate>Tue, 11 May 2010 15:42:04 +0000</pubDate>
		<dc:creator>azu</dc:creator>
				<category><![CDATA[userChome.js]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[userChrome.js]]></category>
		<category><![CDATA[アドオン]]></category>

		<guid isPermaLink="false">http://efcl.info/?p=1692</guid>
		<description><![CDATA[
userChrome.jsでJavascript Actionsのようなスクリプトの実行コマンドをサブメニューのネスト, タブメニューやメインメニュー、コンテキストメニューなどのメニューに追加する形のスクリプトを扱いや [...]]]></description>
			<content:encoded><![CDATA[<dl>
<dt>userChrome.jsで<a title="Javascript Actions" href="http://firefox.geckodev.org/index.php?Javascript%20Actions">Javascript Actions</a>のようなスクリプトの実行コマンドをサブメニューのネスト, タブメニューやメインメニュー、コンテキストメニューなどのメニューに追加する形のスクリプトを扱いやすくしたり、GreasemonkeyのAPIと似たような機能を持つライブラリが使える要にするuserMenu.jsの紹介</dt>
<dt>ダウンロードは以下の場所から</dt>
<dt><strong>userChrome.js &#8211; Mozilla Firefox まとめサイト</strong></dt>
<dd><a title="userChrome.js - Mozilla Firefox まとめサイト" href="http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928">http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928</a></dd>
</dl>
<p>いろいろバージョンが置かれてますが<a class="ext" rel="nofollow" href="http://loda.jp/script/?id=95"><strong class="word0">user</strong>Menu.js ver. 1.21mod 一式(Fx3以降)</a>と最新のものをダウンロードして、ver1.21はあらかじめtabmenuなどのフォルダがあって分かりやすいので、それらを最新版で上書きすると良いでしょう。</p>
<p>こんな感じのファイルが入ってるので、とりあえず動作させるために、FirefoxプロファイルのChromeフォルダにそのまま中身を突っ込みます。</p>
<pre>Chrome
│  0.UCJSToolkit.uc.js
│  GM_modoki.jsl
│  jsa.jsl
│  JSA_modoki.jsl
│  preload.sample.txt
│  scripting.txt
│  userMenu.js.readme.txt
│  userMenu.pl.js
│  userMenu.uc.js
│  ここにはuserChrome.jsなども存在
│
├─contextmenu
│      Add Copy.se.js
│      Element Killer.js
│      Google cache.nl.js
│      Google Translate.se.js
│      Open IE.nl.js
│      Open Selection.se.js
│      Reload Image.im.js
│      Use Javascript.auto.js
│      Wayback.nl.js
│
├─tabmenu
│  └─Order.ct
│          FrameOrder.ct.auto.js
│          ImageOrder.ct.auto.js
│          JSOrder.ct.auto.js
│          PluginOrder.ct.auto.js
│          RedirectOrder.ct.auto.js
│          userContentOrder.ct.auto.js
│
└─toolmenu
        0000.アドオンリストをタブに表示.L.js
        Inspection Here.js
        Rebuild User Menu.js
        Reload userContent.css.js
        Restart Firefox.r.js
        ~.---
</pre>
<p>移動させて再起動すると、コンテキストメニューやツールメニューにいろいろな項目が増えていれば成功です。</p>
<p>一つ一つのスクリプトの機能は数が多いので適当に見れば分かるので、開発したスクリプトをメニューに表示させる方法へ。scripting.txtやuserMenu.js.readme.txtを見ると詳しく書いてありますが、contextmenuやtoolmenuといったフォルダがそのままの構成でメニューと対応してるので、それらのフォルダに作ったスクリプトをjs拡張子にして入れるだけで簡単に登録できます。(スクリプトのファイル名ルールでショートカットなども設定できる)<br />例えば、右クリックに表示されるスクリプトで複数のものを一つのフォルダに入れれば、それが一つの階層になります。</p>
<pre>contextmenu
└─JSAction
        Add Copy.se.js
        Element Killer.js
</pre>
<p>また先ほど紹介したようにGreasemonkeyのAPIと同様の機能を持ったものが一部使えます。<br />GM_setValueやGM_xmlhttpRequestなど。</p>
<p>デバッグ方法としてconsole.ほげ()というFirebugで使われるメソッドが使用できると書いてあるのですが、イマイチ動かなかったので、<br />GM_modoki.jsl (GreasemonkeyのAPIを定義してるファイル)の先頭部分に</p>
<pre class="brush:javascript;">
// fbug(x)でFirebugのコンソールに出力
function main(){
  var windowManager = Components.classes&#91;'@mozilla.org/appshell/window-mediator;1'&#93;
                                .getService(Components.interfaces.nsIWindowMediator);
  return windowManager.getMostRecentWindow("navigator:browser");

}
function fbug(x){
   var {Firebug} = main();
   if(Firebug.Console.isEnabled() &amp;&amp; Firebug.toggleBar(true, 'console'))
     Firebug.Console.logFormatted(Array.slice(arguments));
   return x;
}
</pre>
<p>と書き足して、fbug(x)でFirebugのコンソールに出力するようにしました。<br />Services.jsmが使えるなら以下のような感じで書けるようです。<a href="http://d.hatena.ne.jp/murky-satyr/20100504/xqjs">xqjs &#8211; ’ellaneous</a> が元ネタです。</p>
<pre class="brush:javascript;">Cu.import('Services.jsm');// 読み込み先にresource:// かfile://
function main() Services.wm.getMostRecentWindow('navigator:browser');
function fbug(x){
   var {Firebug} = main();
   if(Firebug.Console.isEnabled() &amp;&amp; Firebug.toggleBar(true, 'console'))
     Firebug.Console.logFormatted(Array.slice(arguments));
   return x;
}
</pre>
<p>上記のfirebugコンソールへの出力は<a href="https://addons.mozilla.org/ja/firefox/addon/159546">xqjs</a>のソースコードを見て知ったものです。<br /><strong><a href="http://d.hatena.ne.jp/murky-satyr/20100504/xqjs">xqjs</a></strong>は<a href="http://code.google.com/p/executejs/" target="_blank">Execute JS</a>のようなその場でChromeやcontentに対してJavaScript実行できるアドオンです。<br />話題の<a href="http://outgoing.mozilla.org/v1/70902f1cc617f6ab9569a48e3398cbef2a14c6ab/http%3A//jashkenas.github.com/coffee-script/">CoffeeScript</a>や<strong>JavaScriptの単語補完</strong>、マクロ機能、便利なユーティティ関数などが使える優れたFirefoxアドオンなので、<a href="http://www.squarefree.com/shell/">JavaScript Shell</a>やFirebugのコンソールで入力するのが微妙だなーと思う人は一度使って見るといいかと思います。<br /><code>fbugでFirebugのコンソールにもlogを吐けるので連携させるとなお便利。<br />Firebugで定義されているXpathやCSSセレクタもマクロで定義されており、copy関数なども存在します。</code></p>
<p>詳しくは作者さんのページとAMOとソースを読む。</p>
<dl>
<dt><strong>xqjs &#8211; ’ellaneous</strong></dt>
<dd><a title="xqjs - ’ellaneous" href="http://d.hatena.ne.jp/murky-satyr/20100504/xqjs">http://d.hatena.ne.jp/murky-satyr/20100504/xqjs</a></dd>
</dl>
<p>話が完全にすり替わりましたが、userMenu.jsはuserChrome.jsを書く上でかなり便利だと思うので、一度見てみることを進めます。</p>
<dl>
<dt><strong>userMenu.js</strong></dt>
<dd><a title="userMenu.js" href="http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928">http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928</a></dd>
</dl>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<dl>
<dt><strong>userChrome.js &#8211; Mozilla Firefox まとめサイト</strong></dt>
<dd><a title="userChrome.js - Mozilla Firefox まとめサイト" href="http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928">http://firefox.geckodev.org/index.php?cmd=read&amp;page=userChrome.js&amp;word=user#g4f5f928</a></dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://efcl.info/2010/0512/res1692/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FirebugでJSON形式を見易くフォーマットするuserChrome.js</title>
		<link>http://efcl.info/2009/1115/res1463/</link>
		<comments>http://efcl.info/2009/1115/res1463/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 11:46:12 +0000</pubDate>
		<dc:creator>azu</dc:creator>
				<category><![CDATA[userChome.js]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[userChrome.js]]></category>

		<guid isPermaLink="false">http://efcl.info/?p=1463</guid>
		<description><![CDATA[FirebugでDOMをtoSource()したときに生成されるJSON形式のようなものがかなり見えづらいので、それを読みやすくコンソールに表示するuserChrome.jsを作成した。 
 あくまで、見易く表示させるこ [...]]]></description>
			<content:encoded><![CDATA[<p>FirebugでDOMをtoSource()したときに生成されるJSON形式のようなものがかなり見えづらいので、それを読みやすくコンソールに表示するuserChrome.jsを作成した。 <br />
 あくまで、<strong>見易く表示</strong>させることを目的としてたので、整形したものを使うという用途には向いてないかもしれません。</p>
<p><span id="more-1463"></span></p>
<p>こっからダウンロード</p>
<ul>
<li><a href="http://gist.github.com/raw/234552/643b98a1f96d3a77efae5627c662bd406d77ea5b/Firebug%20JSON%20formatting.uc.js"><span>Firebug JSON formatting.uc.js</span></a></li>
</ul>
<p>例えばニコニコ動画のマイリストでmy.currentItemes[0].toSource() をやると下のようなものが表示されます。 <br />
 整形されていないしUTF-8などが混ざっていて読みづらいです。</p>
<pre class="brush:javascript;">({item_type:0, item_id:"1237006406", description:"", item_data:{video_id:"sm6429247", title:"\u3010\u521D\u97F3\u30DF\u30AF\u3011Blunder girl\u3010\u30AA\u30EA\u30B8\u30CA\u30EB\u66F2\u3011", thumbnail_url:"http://tn-skr4.smilevideo.jp/smile?i=6429247", first_retrieve:1237006407, update_time:1245142420, view_counter:"1469", mylist_counter:"58", num_res:"38", group_type:"default", length_seconds:"112", deleted:"0", last_res_body:"\u3053\u306E\u4EBA\u306F\u30D4\u30B3\u30D4\u30B3\u97F3\u306E \u51FA\u3060\u3057\u304C\u661F\u9593\u98DB\u884C\u306B\u8074 sm7203573\u306B\u3066\u4F7F\u7528\u3055. ", watch_id:"sm6429247"}, watch:0, create_time:1237007514, update_time:1254596442})
</pre>
<p>そこでこのuserChrome.jsを使って整形して表示させると、コンソールに次のような結果が返ってきます。</p>
<pre class="brush:javascript;"> (object){
	item_type (number): 0
	item_id (string): 1237006406
	description (string):
	item_data (object){
		video_id (string): sm6429247
		title (string): 【初音ミク】Blunder girl【オリジナル曲】
		thumbnail_url (string): http://tn-skr4.smilevideo.jp/smile?i=6429247
		first_retrieve (number): 1237006407
		update_time (number): 1245142420
		view_counter (string): 1469
		mylist_counter (string): 58
		num_res (string): 38
		group_type (string): default
		length_seconds (string): 112
		deleted (string): 0
		last_res_body (string): この人はピコピコ音の 出だしが星間飛行に聴 sm7203573にて使用さ.
		watch_id (string): sm6429247
	}
	watch (number): 0
	create_time (number): 1237007514
	update_time (number): 1254596442
}
</pre>
<p>整形後は何が何の要素なのかがわかりやすく表示されています。<br />
さきほど、整形したものを再利用しにくいと書いたのは、その要素がstringであるなどの情報も含んでいるためです。</p>
<h3>使い方</h3>
<p><br class="spacer_" /></p>
<div id="attachment_1470" class="wp-caption alignnone" style="width: 310px"><a href="http://efcl.info/wp-content/uploads/2009/11/2009-11-14-22-48-43.png"><img class="size-medium wp-image-1470" title="2009-11-14 22-48-43" src="http://efcl.info/wp-content/uploads/2009/11/2009-11-14-22-48-43-300x55.png" alt="使い方の流れ" width="300" height="55" /></a><p class="wp-caption-text">使い方の流れ</p></div>
<p><br class="spacer_" /></p>
<ol>
<li>FirebugのコマンドラインにJSON形式のものだけを入力する(コマンドラインに入力されているものをそのまま使います)</li>
<li>右下のJSONボタンを押す</li>
<li>コンソールに結果が表示される。</li>
</ol>
<p>整形するのに<a href="http://0-oo.net/sbox/javascript/json-decoder">JSONDecoder.js</a>を使用させてもらっています。</p>
<dl>
<dt><strong>JSONを見やすく展開してFirebugとかで表示 &#8211; JSONDecoder.js [ゼロと無限の間に]</strong></dt>
<dd><a title="JSONを見やすく展開してFirebugとかで表示 - JSONDecoder.js [ゼロと無限の間に]" href="http://0-oo.net/sbox/javascript/json-decoder">http://0-oo.net/sbox/javascript/json-decoder</a></dd>
</dl>
<dl>
<dt><strong>gist: 234552 &#8211; GitHub</strong></dt>
<dd><a title="gist: 234552 - GitHub" href="http://gist.github.com/234552">http://gist.github.com/234552</a></dd>
</dl>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://efcl.info/2009/1115/res1463/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firebugのコンソールを外部エディタで編集できるようにするuserChome.js</title>
		<link>http://efcl.info/2009/1115/res1465/</link>
		<comments>http://efcl.info/2009/1115/res1465/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 11:22:45 +0000</pubDate>
		<dc:creator>azu</dc:creator>
				<category><![CDATA[userChome.js]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[userChrome.js]]></category>

		<guid isPermaLink="false">http://efcl.info/?p=1465</guid>
		<description><![CDATA[
FirebugのコンソールタブにあるコマンドラインはちょっとしたJavascriptの動作を確認する際に便利ですが、普段使ってるエディタのように補完やハイライトされないので、少し複雑になると分かりづらくなりますね。
  [...]]]></description>
			<content:encoded><![CDATA[<p><br class="spacer_" /></p>
<p>FirebugのコンソールタブにあるコマンドラインはちょっとしたJavascriptの動作を確認する際に便利ですが、普段使ってるエディタのように補完やハイライトされないので、少し複雑になると分かりづらくなりますね。<br />
 そこで、内容の編集自体はエディタで行いその内容をコマンドラインに反映させるuserChome.jsを作成しました。</p>
<ul>
<li><a href="http://gist.github.com/raw/235044/bb7f4052da88904d0a12595f6437906232dc6d97/Firebug_editor.uc.js"><span>Firebug_editor.uc.js</span></a></li>
</ul>
<h3>使い方</h3>
<ol>
<li>ダウンロードしたスクリプトに60行目くらいにエディタのパスを設定する場所があるのでパスを入れる</li>
<li>Firebugのコンソールタブで大きい方のコマンドラインを開く</li>
<li>右下にEditorというボタンがあるので押す</li>
<li>エディタで内容を編集→保存</li>
<li>Firefoxにフォーカスを戻すと自動的に反映</li>
</ol>
<p>下に動作の動画を置いておくので、下を見ればどのように動いてるか分かると思います。</p>
<p>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="367" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="thumb=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/FirstFrame.png&amp;containerwidth=640&amp;containerheight=367&amp;showstartscreen=true&amp;showendscreen=true&amp;loop=false&amp;autostart=false&amp;color=1A1A1A,1A1A1A&amp;thumb=FirstFrame.png&amp;thumbscale=45&amp;content=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor.mp4" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="allowScriptAccess" value="always" /><param name="base" value="http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/" /><param name="src" value="http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor_controller.swf" /><param name="flashvars" value="thumb=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/FirstFrame.png&amp;containerwidth=1280&amp;containerheight=738&amp;showstartscreen=true&amp;showendscreen=true&amp;loop=false&amp;autostart=false&amp;color=1A1A1A,1A1A1A&amp;thumb=FirstFrame.png&amp;thumbscale=45&amp;content=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor.mp4" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="367" src="http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor_controller.swf" base="http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/" allowscriptaccess="always" scale="showall" allowfullscreen="true" flashvars="thumb=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/FirstFrame.png&amp;containerwidth=1280&amp;containerheight=738&amp;showstartscreen=true&amp;showendscreen=true&amp;loop=false&amp;autostart=false&amp;color=1A1A1A,1A1A1A&amp;thumb=FirstFrame.png&amp;thumbscale=45&amp;content=http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor.mp4" bgcolor="#FFFFFF" quality="high"></embed></object>
</p>
<p><br class="spacer_" /></p>
<p><span style="text-decoration: line-through;">alice0775のスクリプトが元になってるので、Windows以外でも動くとは思います。<br />
</span><a href="http://twitter.com/stillpedant/statuses/5734580172">ラップする必要があったらしい。</a></p>
<dl>
<dt><strong>userChrome.jsの話題9 テキストエリアを外部エディタで編集する &#8211; alice0775のファイル置き場 &#8211; Yahoo!ジオシティーズ</strong></dt>
<dd><a title="userChrome.jsの話題9 テキストエリアを外部エディタで編集する - alice0775のファイル置き場 - Yahoo!ジオシティーズ" href="http://space.geocities.yahoo.co.jp/gl/alice0775/view/20070223/1172156543">http://space.geocities.yahoo.co.jp/gl/alice0775/view/20070223/1172156543</a></dd>
</dl>
<dl>
<dt><strong>gist: 235044 &#8211; Firebugに外部エディタ起動ボタンを追加するuserChrome.js- GitHub</strong></dt>
<dd><a title="gist: 235044 - Firebugに外部エディタ起動ボタンを追加するuserChrome.js- GitHub" href="http://gist.github.com/235044">http://gist.github.com/235044</a></dd>
</dl>
<h3>メモ</h3>
<pre class="brush:javascript;">Firebug.chrome.$("fbLargeCommandLine").addEventListener('focus', function(){
	Application.console.log("tewt")
}, true);
</pre>
<p>とかChrome権限でやるとコマンドラインにフォーカスしたときに動作するaddevenetlinerができる。<br />
 今回使ってないけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://efcl.info/2009/1115/res1465/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://content.screencast.com/users/azu/folders/Default/media/b46b972e-c708-4561-abb1-a46e3a50a400/firebug_editor.mp4" length="1045573" type="video/mp4" />
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  efcl.info/category/firefox/userchome-js/feed/ ) in 0.73459 seconds, on Sep 3rd, 2010 at 5:32 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Sep 3rd, 2010 at 6:32 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  efcl.info/category/firefox/userchome-js/feed/ ) in 0.00060 seconds, on Sep 3rd, 2010 at 5:35 am UTC. -->