我有一个使用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
答案 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]));
}
);