Javascript で書かれた複雑なプログラムをデバッグしていました。大きなマトリックスの変化を見る必要があります。Chrome Inspect Element を使用してマトリックス内の各要素を表示するのは便利ではありません。だから、私はデータをテキストファイルに書きたいと思っています。FileSystem API とターミナルを見つけました。
FileSystem ターミナル プロジェクトを参照して、FileSystem API をプロジェクトに統合しました。そして、 fs.root を格納するグローバル変数を定義します。私が望むのは、デバッグ時にこの変数をプログラムに渡すことです。これにより、この fs.root を使用してデータをテキスト ファイルにダンプできます。ファイルシステムをリクエストします:
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler); // 5MB
しかし、「onInitFs」関数は、非常に遅く呼び出されるメッセージ応答関数のようです。「onLoad='MyFun();'」の後でも。そのため、変数「fs.root」が定義されていることを確認するために、独自の関数をどこに配置すればよいかわかりません。今、「MyFun()」をどこにでも配置しましたが、「onInitFs」関数が呼び出されていないため、「fs.root」が定義されていないというエラーが発生します。呼び出しシーケンスをテストしました:
-------------main.html
<html>
<header>
<script type='text/javascript' src='MyFun.js'></script>
<script type='text/javascript' >
console.log('01Position');
function onInitFs(fs)
{
aGlobalFsRoot = fs.root;
console.log('04Position');
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler);
</script>
</header>
<body onLoad="MyFun();">
<script>
console.log('02Position');
</script>
</body>
</html>
-------------MyFun.js
var aGlobalFsRoot;
function MyFun()
{
console.log('03Position');
// want to use "aGlobalFsRoot" to dump some matrix data, but it is not defined, which means "onInitFs()" is still not called.
}
したがって、Chrome Inspect Element のコンソール ウィンドウで: 01Position 02Position 03Position 04Position
「MyFun()」よりも早く呼び出される「onInitFun()」関数を有効にできますか? または、"MyFun()" をどこに配置すればよいので、"onInitFun()" よりも後で呼び出すことができます。MyFun は読み込み時に前処理作業を行うだけなので、ユーザーにボタンを 1 つクリックさせたくありません。"MyFun()" が "onInitFs()" よりも後で呼び出されるように、メッセージを 1 つ生成してもよろしいですか?