Hatena::Groupos0x

FFFF RSSフィード

0xFFのメモです。

2008 October 14th Tuesday

FirebugのコンソールにaddStyleを追加する

| 14:57 | FirebugのコンソールにaddStyleを追加する - FFFF を含むブックマーク はてなブックマーク - FirebugのコンソールにaddStyleを追加する - FFFF

Firebug用拡張を更新し、コンソールからaddStyle関数を使えるようにしてみた。

http://os0x.g.hatena.ne.jp/keyword/MyFirebug

ついでに肉少なめ | Item - Firebugのコンソールでjavascript 1.8を使うも取り入れてみてた。

addStyleの実装

if (!window.console.styleElement) {
	var style = document.createElementNS("http://www.w3.org/1999/xhtml", "style");
	style.setAttribute("type", "text/css");
	style.setAttribute("id", "_firebugConsoleAppendStyle");
	style.firebugIgnore = true;
	style.setAttribute("style", "display:none");
	//element.innerHTML = src;
	document.documentElement.appendChild(style);
	window.console.styleElement = style;
}
window.console.styleElement.appendChild(document.createTextNode(arguments[0] + '\n'));

初回に console オブジェクトに styleElement を追加し、以降はそれを使いまわす実装にしてみた。これは Greasemetal の GM_addStyle 関数の真似。

firebugIgnore とかは lib.js の FBL.addScript とかを参考に適当に。

全体的に動けばいいや実装なので、ご了承を。

2008 April 11th Friday

Firebugでcho45氏の$X関数を使うオレオレ拡張

| 12:55 | Firebugでcho45氏の$X関数を使うオレオレ拡張 - FFFF を含むブックマーク はてなブックマーク - Firebugでcho45氏の$X関数を使うオレオレ拡張 - FFFF

を作ってみた

http://os0x.g.hatena.ne.jp/keyword/MyFirebug

中身は俺々拡張作成法 - 例題:Firebug を「カクカク化」して $x の第 2 引数でコンテキストノードを指定できるようにする。 - IT戦記 - hogehoge @teramakoほぼそのままです。

$x('count(//span[contains(@class,"entry-title") and contains(text(),"@")])')
//$xだと[] (空の配列)
$X('count(//span[contains(@class,"entry-title") and contains(text(),"@")])')
//$Xだと期待通り数値が返る

こんな感じです。XPathGraphのために作りました。

2008 April 4th Friday

Firefox3beta5でFirebug1.2 alphaを動かす(ついでにAPIをGreasemonkeyっぽく)

| 22:36 | Firefox3beta5でFirebug1.2 alphaを動かす(ついでにAPIをGreasemonkeyっぽく) - FFFF を含むブックマーク はてなブックマーク - Firefox3beta5でFirebug1.2 alphaを動かす(ついでにAPIをGreasemonkeyっぽく) - FFFF

以下の情報はあまり信頼できる情報ではないというか、寿命が短いと思われるので参考程度でお願いします。

追記:早速Firebug 1.2 a13Xでbeta5でも動くようになりました

2008/4/4 21:00時点で、Index of /releasesで公開されているFirebug 1.2 Alphasはコンソールが機能していません*1。これを修正しつつ、GreasemonkeyっぽいAPIを追加してみる試み。

コンソールが動かない理由と対処

ここまでで一応エラーにはならなくなるけど、

  • evalInSandboxするsandboxが空なので、sandbox.__proto__ = win;しておく
  • ついでに、sandbox.console = Firebug.Console;しておいてconsoleを使えるように。

ここまでのパッチ

*** old_commandLine.js	2008-04-04 20:32:38.000000000 +0900
--- commandLine.js	2008-04-04 22:23:09.000000000 +0900
***************
*** 27,32 ****
--- 27,33 ----
  
      evaluateAndShow: function(expr, context, thisValue, targetWindow, successConsoleFunction, exceptionFunction)
      {
+ 				try {
          var win = targetWindow ? targetWindow : ( context.baseWindow ? context.baseWindow : context.window );
          var element = win.document.getElementById("_firebugConsole");
          if (!element)
***************
*** 55,60 ****
--- 56,64 ----
              context.consoleHandler.evaluateError = Firebug.Console.error;
  
          element.dispatchEvent(event);
+ 				} catch (e) {
+ 					Firebug.Console.log(this.evaluate(expr, context, thisValue, targetWindow));
+ 				}
      },
  
      evaluate: function(expr, context, thisValue, targetWindow, skipNotDefinedMessages)  // returns user-level wrapped object I guess.
***************
*** 132,137 ****
--- 136,143 ----
          // bar|, else the page won't see the new value.
          scriptToEval = "with (window?window:null) { " + scriptToEval + " \n};";
  
+ 			sandbox.console = Firebug.Console;
+ 			sandbox.__proto__ = win;
          try {
              result = Components.utils.evalInSandbox(scriptToEval, sandbox);
          } catch (e) {

Greasemonkeyっぽくする

http://svn.devjavu.com/greasemonkey/trunk/src/components/greasemonkey.js のgreasemonkeyService.injectScriptsあたりのコードをコピペ

  • var safeWin = new XPCNativeWrapper(unsafeContentWin);とか
  • GM_ScriptLoggerだけエラーになるのでコメントアウト
  • GM_hitchとか、グローバル変数になってるので普通に呼べちゃう
  • sandoboxにGM関数を追加してゆく

これでなんとなく動いている風味なんですが、実際に呼んでみるとGM_apiLeakCheckってのが未定義だと怒られてしまってGM関数は使えていませんorz。GM_addStyleだけは動いた。

TODO:何とかできたら追記。そしてうまくいく様ならちゃんと拡張にしてみる。

[追記]

一応GM関数が使えるようになったぽいです。

Firebugのコンソールで、

GM_xmlhttpRequest({url:location.href,method:'GET',onload:function(res){console.log([this,res])}})

が動きました。とりあえず、差分を置いておきます。

http://ss-o.net/txt/commandline.txt

[/追記]

*1http://code.google.com/p/fbug/ブランチにある最新版ではすでに修正されていそうな気配です

名無し名無し2008/04/05 17:20Firebug1.2.0a13XではConsoleが動くようになったみたいです。
ですが、about:blankではconsole is not definedと出て動きません。

2008 March 14th Friday

ChromeBug Alphas

| 12:24 | ChromeBug Alphas - FFFF を含むブックマーク はてなブックマーク - ChromeBug Alphas - FFFF

偶然、Index of /releasesでChromeBug Alphasというのを見つけた。

と条件は厳しいけど、beta4は常用してないので迷わずインストール

とりあえず、スクリーンショット

http://ss-o.net/img/ChromeBugClipboard01.gif

http://ss-o.net/img/ChromeBugClipboard02.gif

面白い。正直、Firefox自体は全然詳しくないのだけど、こういうのがあると自然と理解が深まりそうだ。

http://malblue.tumblr.com/post/28805052 より、readmeは https://fireclipse.svn.sourceforge.net/svnroot/fireclipse/trunk/FireclipseExtensions/chromebug/Readme.txt
てか、https://fireclipse.svn.sourceforge.net/svnroot/fireclipse/trunk/ にtrunkがあるんですな。