我正在使用大量的
JavaScript开发一个phonegap应用程序.现在我正在使用Safari Developer Tool对其进行调试,特别是我专注于设备上的一些按钮似乎有点懒散.
所以我添加了一些console.timeEnd()以更好地理解代码减速的位置,但“问题”是当我打开控制台时代码开始运行得更快而没有延迟,如果我再次关闭它,滞后回来.
所以我添加了一些console.timeEnd()以更好地理解代码减速的位置,但“问题”是当我打开控制台时代码开始运行得更快而没有延迟,如果我再次关闭它,滞后回来.
也许我的问题很愚蠢,但我无法弄清楚
谢谢
function scriviNumeroTastiera(tasto){ console.time('Funzione ScriviNumeroTastiera'); contenutoInput = document.getElementById('artInserito').value; if ($('#cursoreImg').css('display') == 'none'){ //$('#cursoreImg').show(); } else if (tasto == 'cancella'){ //alert(contenutoInput.length); if (contenutoInput.length == 0) { } else { indicePerTaglioStringa = (contenutoInput.length)-1; contenutoInput = contenutoInput.substr(0,indicePerTaglioStringa); $('#artInserito').val(contenutoInput); //alert('tastoCanc'); margineAttualeImg = $('#cursoreImg').css('margin-left'); indicePerTaglioStringa = margineAttualeImg.indexOf('p'); margineAttualeImg = margineAttualeImg.substr(0,indicePerTaglioStringa); margineAggiornato = parseInt(margineAttualeImg)-20; $('#cursoreImg').css('margin-left',margineAggiornato+'px'); } } else { //contenutoInput = document.getElementById('artInserito').value; contenutoAggiornato = contenutoInput+tasto; margineAttualeImg = $('#cursoreImg').css('margin-left'); indicePerTaglioStringa = margineAttualeImg.indexOf('p'); margineAttualeImg = margineAttualeImg.substr(0,indicePerTaglioStringa); margineAggiornato = parseInt(margineAttualeImg)+20; $('#cursoreImg').css('margin-left',margineAggiornato+'px'); $('#artInserito').val(contenutoAggiornato); } console.timeEnd('Funzione ScriviNumeroTastiera'); }
代码有点糟糕,但它只是一个开始;)
解决方法
这可能是因为PhoneGap / Cordova创建了自己的控制台对象(在cordova.js中),当你打开Safari控制台时它会被覆盖(safari可能比phonegap更快,这可能就是为什么你会更快地注意到它).
因此,在不打开控制台的情况下正确测量时间的一种方法是转到旧的警报,因此您首先要在应用中的任何位置添加此代码:
var TIMER = { start: function(name,reset){ if(!name) { return; } var time = new Date().getTime(); if(!TIMER.stimeCounters) { TIMER.stimeCounters = {} }; var key = "KEY" + name.toString(); if(!reset && TIMER.stimeCounters[key]) { return; } TIMER.stimeCounters[key] = time; },end: function(name){ var time = new Date().getTime(); if(!TIMER.stimeCounters) { return; } var key = "KEY" + name.toString(); var timeCounter = TIMER.stimeCounters[key]; if(timeCounter) { var diff = time - timeCounter; var label = name + ": " + diff + "ms"; console.info(label); delete TIMER.stimeCounters[key]; } return diff; } };
(这只是模仿console.time和console.timeEnd方法,但它返回值,以便我们可以提醒它).
然后,而不是调用:
console.time('Funzione ScriviNumeroTastiera');
你打电话给:
TIMER.start('Funzione ScriviNumeroTastiera');
而不是打电话:
console.timeEnd('Funzione ScriviNumeroTastiera');
你打电话给:
var timeScriviNumeroTastiera = TIMER.end('Funzione ScriviNumeroTastiera'); alert('Ellapsed time: ' + timeScriviNumeroTastiera);
这样可以在不打开控制台的情况下为您提供适当的时间,因此它可以计算出phonegap应用中的实时时间.
希望这可以帮助.干杯