「コンソールに出力」の編集履歴(バックアップ)一覧に戻る

コンソールに出力 - (2016/09/06 (火) 08:03:47) のソース

エラーコンソールやブラウザコンソールに出力する。
出力する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);}
//と書いておかないと使えない。