iOS Safari调试控制台 - 如何获取错误的行号?

时间:2012-08-22 18:07:45

标签: jquery ios backbone.js mobile-safari

我有一个使用jQuery延迟对象回调加载依赖文件的backboneJS项目 - 网站在桌面,经过测试的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延迟的旧的iOS safari错误?

编辑:使用以下版本 -

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

2 个答案:

答案 0 :(得分:1)

修正了问题。找到了一行代码,其中属性名称为class,如myObj.class = 'foo';,显然class是旧版JS解析器中的保留字。将其更改为className并且有效。

就此而言,我仍然想知道如何在iOS Safari调试控制台中查看解析错误的行号。如果有人能提供答案,我会接受。

答案 1 :(得分: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]));
    }
);