Javascript iOS模拟器JS错误仅警报行号为0
在iOS模拟器中运行项目时,XCode是否压缩/缩小JS?我正在尝试使用jQuery调试JS文件,在iOS模拟器中获取错误数据的方法之一如下: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属性工作正常。当我使用桌面浏览器在我的桌面上运行相
$(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行显示所有内容的事实让我更加悲观。抱歉:|