2

我有一个backboneJS项目,它使用jQuery延迟对象回调加载依赖文件-该网站在台式机,经过测试的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
4

2 回答 2

1

修复了问题。找到了一行代码,其中的属性名称是classmyObj.class = 'foo';并且显然class是旧 JS 解析器中的保留字。将其更改为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 回答