Javascript iOS模拟器JS错误仅警报行号为0

Javascript iOS模拟器JS错误仅警报行号为0,javascript,jquery,xcode,ios-simulator,Javascript,Jquery,Xcode,Ios Simulator,在iOS模拟器中运行项目时,XCode是否压缩/缩小JS?我正在尝试使用jQuery调试JS文件,在iOS模拟器中获取错误数据的方法之一如下: $(window).error(function(err) { alert('Msg: ' + err.originalEvent.message + ' | Lno: ' + err.originalEvent.lineno); }): 问题是发出警报的唯一行号是0。message属性工作正常。当我使用桌面浏览器在我的桌面上运行相

在iOS模拟器中运行项目时,XCode是否压缩/缩小JS?我正在尝试使用jQuery调试JS文件,在iOS模拟器中获取错误数据的方法之一如下:

$(window).error(function(err) {  
    alert('Msg: ' + err.originalEvent.message + ' | Lno: ' + err.originalEvent.lineno);  
}):  
问题是发出警报的唯一行号是0。message属性工作正常。当我使用桌面浏览器在我的桌面上运行相同的代码时,我可以毫无疑问地获得originalEvent对象的lineno属性,所以我猜XCode在构建项目时对我的JS做了一些事情

有没有办法关掉这个


再调试一下(并使用此线程中的printObject函数:)之后,iOS模拟器中似乎可以使用错误对象的大多数属性。但是,出于某些原因,lineno的值仅为0

这都来自iOS模拟器的JS错误对象:

message: ReferenceError: Can't find variable: URL  
lineno: 0  
returnValue: true  
timeStamp: 1328890716292  
eventPhase: 2  
target: [object DOMWindow]  
defaultPrevented: false  
srcElement: [object DOMWindow]  
type: error  
clipboardData: undefined  
cancelable: true  
currentTarget: [object DOMWindow]  
bubbles: false  
cancelBubble: false  
initErrorEvent: function initErrorEvent() {  
    [native code]  
}  
preventDefault: function preventDefault() {  
    [native code]  
}  
initEvent: function initEvent() {  
    [native code]  
}  
stopPropagation: function stopPropagation() {  
    [native code]  
}  
stopImmediatePropagation: function stopImmediatePropagation() {  
    [native code]  
}  
MOUSEOUT: 8  
FOCUS: 4096  
CHANGE: 32768  
MOUSEMOVE: 16  
AT_TARGET: 2  
SELECT: 16384  
BLUR: 8192  
KEYUP: 512  
MOUSEDOWN: 1  
MOUSEDRAG: 32  
BUBBLING_PHASE: 3  
MOUSEUP: 2  
CAPTURING_PHASE: 1  
MOUSEOVER: 4  
CLICK: 64  
DBLCLICK: 128  
KEYDOWN: 256  
KEYPRESS: 1024  
DRAGDROP: 2048 

Javascript是一种解释语言,它不需要像传统编译语言那样“构建”。所以不,XCode没有(或者不应该)对您的JS代码做任何事情


问题可能在于IOS或至少是IOS模拟器查看代码的方式。桌面浏览器和移动浏览器之间存在差异,为了简单起见,您可能无法像在功能更强大的设备上那样深入地查看错误日志。

这是有道理的,这也可能是为什么iOS模拟器将lineno属性视为“0”而不是“1”的原因(1可能意味着JS被压缩,并且全部在一行上,就像在桌面上的Firebug中查看缩小的JS一样)。它可能不存在于iOS模拟器中,因此jQuery只返回一个值“0”。快速测试表明,使用我上面发布的jQuery事件,或者直接使用JS(window.onerror)两者都产生相同的结果;Chrome/desktop中的行号,iOS模拟器中没有行号。有人知道如何在iOS模拟器中获取JS中的行号吗?Xcode的调试器不会记录任何内容,但看起来标准Safari调试器确实会报告行号:有没有通过JS访问的方法?不幸的是,听起来就像IOS浏览器的一个限制。开发人员站点在第1行显示所有内容的事实让我更加悲观。抱歉:|