0

Mac OS X 10.8.4、Chrome 27 (最新の安定版) を使用。

サーバーへの接続がまだ存在するかどうかを確認するために、X 秒ごとに (を使用してsetInterval()) jQuery を使用して AJAX 呼び出しを行うスクリプトがあります (ハートビート)。いくつかのデータを投稿し、成功したかどうかに応じて、他の関数を呼び出します。

Mac がスリープ状態 (画面が黒くなる、HDD の電源が切れるなど) になるまで正常に動作し、起動すると AJAX 呼び出しが失敗し、明らかに存在しない関数 (変数) を呼び出そうとしました。

POST http://mywebsite.com/index.php  jquery.min.js:4
Uncaught TypeError: Cannot call method 'onLost' of undefined

onLostmylibやなど、他の変数内の関数ですanotherlib。それらは、ページの読み込みの非常に早い段階でインスタンス化されます。コードはもっと複雑ですが、簡略化したバージョンを次に示します。

var mylib = new mylib();

mylib.anotherlib = function() { this.onLost = function() { ... }}

setInterval() { function() { $.ajax({ failed: mylib.anotherlib.onLost }); }, 10000);

エラーが発生した後、スクリプトは通常どおりに動作します。アクセスできmylibて問題ありませんonLost()setTimeout()ブラウザーの実装とコンピューターのスリープ状態が異なることは知っていますsetInterval()(Chrome は一時停止したり、速度を落としたりしませんか?)、それでも奇妙なエラーです。

それは私が呼び出している方法ですか、failedそれともjQueryがどのように機能するの$.ajax()でしょうか?

4

0 に答える 0