Avevo appena letto anche quell'articolo ed ero curioso di provarlo da solo. Ho preso una pugnalata all'aggiunta di un wrapper al callback di RAF nei browser che non supportano i timer ad alta risoluzione. Esso utilizza polyfill originale di Paul irlandese con le seguenti linee aggiunte:
var hasPerformance = !!(window.performance && window.performance.now);
// Add new wrapper for browsers that don't have performance
if (!hasPerformance) {
// Store reference to existing rAF and initial startTime
var rAF = window.requestAnimationFrame,
startTime = +new Date;
// Override window rAF to include wrapped callback
window.requestAnimationFrame = function (callback, element) {
// Wrap the given callback to pass in performance timestamp
var wrapped = function (timestamp) {
// Get performance-style timestamp
var performanceTimestamp = (timestamp < 1e12)
? timestamp
: timestamp - startTime;
return callback(performanceTimestamp);
};
// Call original rAF with wrapped callback
rAF(wrapped, element);
}
}
Ecco un senso di essa tutto combinato insieme e un esempio aggiornato con il nuovo codice:
https://gist.github.com/4078614
http://jsfiddle.net/timhall/XQpzU/4351/
Questo approccio mira a normalizzare il parametro passato nella funzione di callback al formato del timer ad alta risoluzione. Potresti usare un approccio simile, proprio di fronte, per convertire il timer ad alta risoluzione nel vecchio formato se il codice esistente lo prevede, ma lo vedo come una regressione.
Ho intenzione di provarlo in uno dei miei progetti su cui sto lavorando in questo momento e aggiornerò l'essenza se trovo problemi/miglioramenti.
fonte
2012-11-15 13:23:59
Non credo sia possibile ottenere un millisecondo di secondo orario per funzionare senza le nuove API – Bergi
Abbiamo intenzione di estendere questa modifica in Chrome 21, quindi se stai già sfruttando questo parametro di callback, sii sicuro di aggiornare il tuo codice! - Non Chrome 20, hai ancora tempo. – nycynik