エラーコンソールやブラウザコンソールに出力する。 出力するURLにリンクを張りたいんだけど、無理なのかな… #contents() *ブラウザコンソールを開く #highlight(javascript){ window.HUDService.openBrowserConsoleOrFocus();} windowは"navigator:browser"ウィンドウ。 windowがない場合は、 #highlight(javascript){{ var {devtools} = Components.utils.import("resource://devtools/shared/Loader.jsm", {}); var HUDService = devtools.require("devtools/client/webconsole/hudservice"); HUDService.openBrowserConsoleOrFocus();}} //開発中?よくわからないのでコメントアウト //*Log.jsmを使って出力 //-[[Log.jsm - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Log.jsm]] //まだ開発途中なので使うのは良くないと思われ *Console.jsmを使ってブラウザコンソールに出力 -[[Browser Console - Firefox Developer Tools | MDN>https://developer.mozilla.org/en-US/docs/Tools/Browser_Console#Messages_from_add-ons]] -[[Console - Web API Interfaces | MDN>https://developer.mozilla.org/en-US/docs/Web/API/console]] #highlight(javascript){ Cu.import("resource://gre/modules/devtools/Console.jsm"); console.log("sample message");} エラーコンソールには出力されないのに注意。 警告とかエラーとか、タイマーやスタックトレースもある。 *従来のコンソールサービスを使って出力 **メッセージを出力 #highlight(javascript){ Cu.import("resource://gre/modules/Services.jsm"); Services.console.logStringMessage("sample message");} Services.consoleは[[nsIConsoleService>https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService]]。 **エラー、警告、メッセージをより詳細に出力 #highlight(javascript){ Cu.import("resource://gre/modules/Services.jsm"); var scriptError = Cc["@mozilla.org/scripterror;1"].createInstance(Ci.nsIScriptError); var aMessage = "sample message"; // 出力する文字列 var aSourceName = null; // ソースファイルのURL。nullなら表示しない var aSourceLine = null; // 行番号。nullなら表示しない var aLineNumber = null; // エラー位置特定のための行番号 var aColumnNumber = null; // エラー位置特定のための桁番号 var aFlags = scriptError.warningFlag; // エラー、警告、例外、メッセージのどれなのか指定 var aCategory = "chrome javascript"; // コードの種類を指定 scriptError.init(aMessage, aSourceName, aSourceLine, aLineNumber, aColumnNumber, aFlags, aCategory); Services.console.logMessage(scriptError);} わざわざnsIScriptErrorオブジェクトを作らないといけないのが激しく面倒。 ただ、「警告」が出せるのはこれだけっぽい。 -[[nsIConsoleService - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService]] -[[nsIScriptError - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptError]] *reportErrorでエラーを出力 #highlight(javascript){ Cu.reportError("reportError message");} -[[Components.utils.reportError | MDN>https://developer.mozilla.org/en-US/docs/Components.utils.reportError]] //fx47でFUELは廃止されたのでコメントアウト //*FUELを使用してメッセージを出力 //-[[extIConsole - Mozilla | MDN>https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Toolkit_API/extIConsole]] //#highlight(javascript){ //Application.console.log("sample message");} //現状ではほぼ廃れていると言っていい。 //あと、JSM内では、 //#highlight(javascript){ //var Application = Cc["@mozilla.org/fuel/application;1"].getService(Ci.fuelIApplication);} //と書いておかないと使えない。