技術メモ帳 このページをアンテナに追加 RSSフィード

2006-08-13

[]Firebugのソース読んで見つけたもの 18:43 Firebugのソース読んで見つけたもの - 技術メモ帳 を含むブックマーク Firebugのソース読んで見つけたもの - 技術メモ帳 のブックマークコメント

最近、簡単にソース読んでたのだが、

誰かの参考になるかもしれないので書いてみる。

ドキュメントに載ってないはず。

会社で暇なときに読んだっきりで記憶を頼りに書いてるので

コレまた間違ってるかもしれない。


  • console#group, console#groupEnd

グループを指定するもの?

どちらにせよ未実装の機能だった。

group = function(){}

だいたいこのような感じになってた。


  • __firebug__

オブジェクト。open と send メソッドがある。

どうもソースを見ると XmlHttpRequest のラッパーっぽかった。

詳しくは知らない。

内部的にはバリバリ使われてるのだが、(xmlHttpRequestの内容をスニッフィングするときに)

なぜこれが外部に出てるのかがわからない。


  • FireBugEval

コマンドラインに入力された文字列を実行するときに

内部で一時的に使用しているものなはずなのだが(ボクはそう読めた)

参照できるようだ。

関連して、

FireBugEval.api, FireBugEval.expr ってのがある。

expr に実行されるコマンドライン文字列が代入されて、

api には、commandLineAPI.js で定義されてる FireBugCommandLineAPI というオブジェクトが入る。

ためしに、以下のコマンドを打ち込んでみるとわかります。

$$ とか $x とかが定義されてます。

>>> console.log( "%1.o", FireBugEval.api );

で、この FireBugEval.api にメソッド定義すれば、

Firebug のコマンドライン上で使えるようになる。

以下はその追加の例。

>>> FireBugEval.api.$c = function(name){ return document.createElement(name); }

こうすると、コマンドラインで $c ってのが使える。

WEBページ上との名前の衝突の回避に良いかもしれないですね。


追記:

Greasemonkey とかで FireBugEval.api

になんかを追加するようにすれば面白いかも。

って最初書いたのだが、よく考えたら Greasemonkey からでは

上記オブジェクトにアクセスできないのだった。


[]Greasemonkeyで永続的に外部スクリプトを利用する 10:36 Greasemonkeyで永続的に外部スクリプトを利用する - 技術メモ帳 を含むブックマーク Greasemonkeyで永続的に外部スクリプトを利用する - 技術メモ帳 のブックマークコメント

GM_setValue / GM_getValue + unsafeWindow.eval を使って

永続的に外部スクリプトを利用する方法を考えてみた。

わざわざ DOM で script要素 を毎回注入するよりも

速いんじゃないかと思う。


Greasemonkeyには、GM_setValue / GM_getValue というのがあって、

GM_setValue("キー", "値")

上記のように入力してあげる事によって、たとえ、

Firefoxを終了させたとしても消えないデータを作成する事が出来る。


そして、それを利用して、

初回のみ XmlHttpRequest で外部スクリプトデータを取得して、

GM_setValue でスクリプトデータを永続化しておき、

二回目以降は、それを GM_getValue して eval するようにした。

以下は、永続的に

prototype.js を使用できるようにする Greasemonkey


permanent_prototype.user.js

// ==UserScript==
// @name          permanent prototype.js loader
// @namespace     null
// @description	  null
// @include       http://*
// ==/UserScript==

// 永続化したものが既に存在していたら、
// それを取得して eval する。
var permanent = GM_getValue("prototype.js");
if( typeof permanent == "undefined" ) {
  // もし存在していなかったときは、
  // XmlHttpRequestで新たに取得。
  GM_xmlhttpRequest({
     method: 'get',
     url: 'http://prototype.conio.net/dist/prototype-1.4.0.js',
     onload: function(details){
       // 取得に成功したとき、永続化する。
       GM_setValue( "prototype.js", details.responseText );

       // ついでに実行しとく。
       unsafeWindow.eval( details.responseText );
     }
   });
} else {
  unsafeWindow.eval( permanent );
}

[]altavistaの翻訳Proxy? 18:17 altavistaの翻訳Proxy? - 技術メモ帳 を含むブックマーク altavistaの翻訳Proxy? - 技術メモ帳 のブックマークコメント

リンク元にこんなのがあった。

http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=ja_en&url=http%3A%2F%2Fd.hatena.ne.jp%2Flurker%2F20060728%2F1154093951

altavista のこんな機能知らなかった。

それにしても、technical memo pad とか超カッコいい。

snaka72snaka72 2008/12/28 12:48 @requireを使わない理由。または、@requireと比較して優位な点はどこにあるんでしょうか?(素直な疑問として)

snaka72snaka72 2008/12/28 13:15 今気づいた。@requireが導入される前の記事だったんですね。スンマセン。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。