- 2008-06-24 (火)
- 技術
簡易版FirebugのFirebug Liteのコードを見てて思ったのが、FirefoxでFirebug Liteを埋め込んだページをロードした場合に、ちゃんと既存のほうのFirebugが開いたのでどっかで判断しているじゃないかと思ったら1行目に書いてあったw
if (("console" in window) || ("firebug" in console)) {
alert("Firebugが入っています");
}
初めのif文がまさにそれ!
alertは自前で付け足したものですが、if文のところはそれでしょう。
でももしwindowオブジェクトにconsoleがなかった場合に、次の("firebug" in console)でconsoleというオブジェクトが存在しないためにエラーなるかも。
いろいろ実験した結果ブラウザにごとに条件分けしないといけないかもです。
続きで実験用のボタンをご用意しています。
案の定consoleオブジェクトが見つかりませんになったので、windowオブジェクトにconsoleがあるかどうかで判断しています。
function firebugcheck() {
if ("console" in window) {
alert("Firebugが入っています");
}
else {
alert("Firebugが入ってない");
}
}
とりあえずFirebugが入っているFirefoxと、IEとで実験してみたところちゃんとFirefoxのほうで入っているというアラートが出たのでこれでいいのかな?
気持ちが悪いのがSafari3.1で上のボタンを押すと「Firebug入ってます」になった(入ってるの?w)
Safariの場合はこうかもしれない。
function firebugcheck() {
if (("console" in window) && ("firebug" in console)) {
alert("Firebugが入っています");
}
else {
alert("Firebugが入ってない");
}
}
ちょっと面倒だな~。
追記:
Safari 1.3以降では、JavaScriptで
via: Safari Developer FAQwindow.()を使用することにより、任意の情報を明示的に記録する関数(Objective-CのNSLog()に似た関数)がサポートされます。すべてのメッセージが「JavaScript Console」ウインドウに送られ、JavaScript例外と容易に区別がつくように濃い緑色できれいに表示されます。
Safari1.3以降でconsole.logは存在しているみたいです。
for (var i in console) {
console.log(console[i]);
}
console.log("aaa");
forinで列挙してみたら
- warn
- error
- log
- info
の4種類があることが分かりました。
じゃあどこに出力されるの?というとエラーコンソールだそうです。
なるほどFirebugいらずってことですな。
【関連する記事】
- Firefox2でonload前にalert呼ぶとstyleが崩れる
- Firefoxではタグに値を入れるときはinnerTextではなくtextContentを使う
- キングボンビーがサイトを侵略する?jQuery Plugin - kingbonbi.js作りました
- Newer: プログラマが席を立つときってどんなん
- Older: innerHTMLに値がないとgetElementByIdでnullになるパターン
Comments:0
Trackback:0
- TrackBack URL for this entry
- http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1052
- Listed below are links to weblogs that reference
- Firebugが入っているかをJavaScriptから判断する方法 from HouseTect, JavaScripter Blog

