2

jQuery遅延オブジェクトコールバックを使用して依存ファイルをロードするbackboneJSプロジェクトがあります.Webサイトは、デスクトップ、テスト済みのAndroidデバイス、およびiOS 5.1を搭載したiPadで正常にロードされます.クライアントは、サイトが彼女のiPadでは機能しないことに注意しました. iOS 4.3.5で。これが私のコードです:

$.when(
    // Load the stuff here...
).done(
    // Call jQuery DOM ready code here...
).fail(
    function () {
        for(var i=0; i<arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
);

これは、Safari のデバッグ コンソールに送信されるものです (console.logステートメントの行番号を差し引いたもの)。

[object Object]
parseerror
SyntaxError: Parse error

それはまったく役に立ちません-15のバックボーンビューとモデルを盲目的にデバッグせずに、その解析エラーを特定する方法はありますか? トラブルシューティングの調査中に見逃した Backbone または jQuery deferred に関する既知の古い iOS Safari バグはありますか?

編集:次のバージョンを使用 -

Backbone.js (unminified) 0.9.1
jQuery (unminified) 1.8.0
4

2 に答える 2

1

問題を修正しました。プロパティ名がclass, likemyObj.class = 'foo';で、古い JS パーサーでは明らかclassに予約語であるコード行が見つかりました。に変更しclassName、動作しました。

その点については、iOS Safari デバッグ コンソールで解析エラーの行番号を表示する方法を引き続き知りたいと思います。誰かがその答えを提供できるなら、私はそれを受け入れます。

于 2012-08-23T00:43:35.987 に答える
0

Nikoshr は正しい考えを持っていますが、より具体的には、引数で渡されるオブジェクトを文字列化する必要があります。デバッグ コンソールはすべてを切り詰めるので、ページ コンテンツをデバッグ用のダンプに置き換えるだけです。行番号は表示されない可能性がありますが、解析エラーが発生した場合は、オブジェクトが何らかの形で台無しになっている可能性があります。ajax呼び出しまたは何かからの切り捨てられた応答テキスト-私はあなたがそうであるため、または遅延オブジェクトを返す何か// Load the stuff hereを使用していると想像するだけです。$.getScriptもしそうなら、これを試してください:

$.when(
    // Load the stuff here...
).done(
    // Call jQuery DOM ready code here...
).fail(
    function () {
        document.write(JSON.stringify(arguments[0]));
    }
);
于 2012-08-22T19:19:00.817 に答える