11

これを実現するために RKiosk 拡張機能を使用して、キオスク モードの Firefox で実行される Web アプリケーションがあります。システムで JavaScript エラーが発生する非常にまれなエラーが発生していると思われます。ただし、JavaScript コンソールにアクセスできないため、ログを調べることができません。

開いているタブやページに関係なく、Firefox がすべての JavaScript コンソール メッセージをファイルに記録するようにするオプションを探しています。この拡張機能が見つからないようです。サーバーにエラーを送り返す log4javascript を既に使用していますが、ロギングを完全にスキップする方法でアプリケーションがクラッシュしたようです。

4

7 に答える 7

4

ファイルへの書き込みは、私にとって退屈な作業のように思えます。ブラウザ コードが通常持っていない権限が必要であり、ファイル I/Oにアクセスするために作成する必要があるアドオンと交渉する必要があります。

私が理解していることから、あなたの問題は

Firefox にすべてのエラーを記録させたい

これに取り組むために私たちができるいくつかのアプローチがあります

最初のアプローチ - すべてを localStorage にも記録します。

現在、実際のファイルに書き込むのではなく、localStorageorに書き込むことができますIndexedDB

localStorage["myApplog"] = localStorage["myApplog"] || "";
var oldLog = console.log;
console.log = function(){
    oldLog.apply(console,arguments); // use the old console log
    var message =  "\n "+(new Date).toISOString() + " :: "+
                   Array.prototype.join.call(arguments," , "); // the arguments
    localStorage["myApplog"] += message; 
}

これはかなり汚れていて、かなり遅いですが、ジョブを完了させる必要があり、後でローカル ストレージのログにアクセスできます。ロギングに夢中にならないのであれば、私が正しく思い出すと、LocalStorageには〜5MBの制限があります。選択的に実行することもできます。

2 番目のアプローチ - エラーのみをログに記録する

これは、Pumbaa80 が提案したものと似ています。単純にオーバーライドwindow.onerrorして、エラーのみをログに記録できます。

// put an empty string in loggedWinErrors first
var oldError = window.onerror || function(){};
window.onerror = function(err,url,lineNumber){
   oldError.call(this,err,url,lineNumber);
   var err ="\n Error: (file: " + url+", error: "+err+", lineNumber: "+lineNumber+")"); 
   localStorage["loggedWinErrors"] += err;
}

3 番目の抜本的なアプローチ - VM を使用します。

これは最も強力なバージョンですが、最も問題のあるユーザー エクスペリエンスを提供します。仮想マシンでキオスクを実行すると、キャッチされない例外が検出されます。マシンをフリーズして状態を保存し、代わりにバックアップ VM を実行します。最も恐ろしいエラーに取り組むときだけこれをしなければなりませんでしたが、それはきれいではありません. キャプチャされた状態全体が本当に必要でない限り、これを行わないでください。

実際、この前に拡張を行ってください。これは面倒ですが、非常に確実な結果が得られます。


結論として、最初のアプローチ、または 2 番目のアプローチだけでも、必要なものには十分すぎると思います。localStorageセキュリティの問題なしに状態を保存するために Web ページが取得する抽象化されたストレージです。それが十分でない場合は、IndexedDB ソリューションについて話すことができます。

それはすべて、実際のユースケースに依存します。

于 2013-10-15T09:20:00.563 に答える
3

XULRunner ... XULアプリケーション用の Mozilla ランタイム環境を使用できます。Firefox のようなGeckoを使用します。

  1. ファイル システムにアクセスするか、SQLiteデータベースを使用してログを保存できます。
  2. 拡張機能を使用せずに、キオスクをフルスクリーン モードで表示できます。
于 2013-10-22T03:20:02.857 に答える
1

jserrorcollector を試しましたか? 私たちはそれを使用しており、正常に動作します (Firefox のみ)。Java専用です。

// Initialize
FirefoxProfile ffProfile = null;
ffProfile = new FirefoxProfile();
JavaScriptError.addExtension(ffProfile);

 // Get the errors
List<JavaScriptError> jsErrors = JavaScriptError.readErrors(webDriver);

詳細: https://github.com/mguillem/JSErrorCollector

于 2013-10-22T08:38:43.077 に答える
1

次のコンソール エクスポートを試してください。FirefoxのFirebug用プラグインです。とても便利です。

http://www.softwareishard.com/blog/consoleexport/

于 2014-05-16T21:41:02.160 に答える
0

Qbakaのようなリモート ロギング スクリプトを使用できます。すべての JS エラーをキャッチし、Qbaka サーバーに送信します。そこにログインして、すべての JS エラーを表示できます。Qbaka は、正確なエラー メッセージ、スクリプト、行番号、スタック トレース、および各エラー メッセージに使用されたブラウザーを保存します。

于 2013-10-22T07:44:56.267 に答える
0

Firefox から Chrome または Opera に切り替えることができる、または切り替える意思がある場合は、Sandboxed Filesystem API を使用してローカル ファイルを書き込むことができます。見る:

を使用してキオスクモードで起動しますchrome.exe --kiosk <url>

次に、Alt-F4 と Ctrl-Alt-Del を無効にする必要があります。Windows では、Auto Hotkeyなどのいくつかのサードパーティ ツールを使用して実行できます( Ctrl-Alt-Del スクリプトを無効にする)。

于 2013-10-22T07:29:06.087 に答える