2014-10-21 25 views
31

Ho il monitoraggio degli errori javascript sul mio sito web. Recentemente ho cominciato a ricevere il seguente errore da Chrome (versioni 37 e 38) su iPhone (iOS 7 e 8):ReferenceError: Impossibile trovare la variabile: __gCrWeb

ReferenceError: Can't find variable: __gCrWeb

non ho potuto trovare tutte le informazioni utili su questo errore ad eccezione di alcuni riferimenti. Qualcuno l'ha visto prima e sa perché succede?

+4

per me stesso errore. Ulteriori informazioni: Browser - iPhone Safari 5.0, Agente utente - Mozilla/5.0 (iPhone, CPU iPhone OS 8_0_2 come Mac OS X) AppleWebKit/600.1.4 (KHTML, come Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1. 4 –

+0

Lo vediamo al 99% su iPad Chrome. Non ottenere mai una traccia di stack. Abbiamo anche problemi con iPad Safari che si blocca in modo casuale, quindi ci preoccupiamo che questo sia il colpevole. Mozilla/5.0 (iPad; CPU OS 8_0_2 come Mac OS X) AppleWebKit/600.1.4 (KHTML, come Gecko) CriOS/38.0.2125.67 Mobile/12A405 Safari/600.1.4 –

+0

fwiw, CriOS è Chrome per iOS. –

risposta

13

__gcrweb è un riferimento di gcrweb.js, che è un dispositivo locale (sul dispositivo) che viene iniettato dalla versione iOS di Chrome.

Google ha bisogno di fare questo per alcune funzionalità estese (principalmente inserendo/recuperando credenziali di accesso e altre informazioni sui moduli memorizzate tramite un altro browser Chrome sincronizzato) che non è fornito dalla webview nativa su cui è basato e non può essere aggiunto ad esso altrimenti.

Ciò non dovrebbe pregiudicare eventuali parti del codice e mi piacerebbe sbarazzarsi di esso ignorando nel vostro errore di registrazione (l'errore deve essere sempre la stessa stringa), ad esempio:

http://raven-js.readthedocs.org/en/latest/config/#ignoreerrors https://rollbar.com/docs/notifier/rollbar.js/#ignoring-specific-exception-messages

Un'altra soluzione potrebbe essere quello di fare in modo che il riferimento esiste sempre, dichiarando da soli, all'inizio della vostra js init

if (!window.__gCrWeb) window['__gCrWeb'] = {}; 

proprio come Google does it.

+0

Grazie! Questo è documentato da qualche parte? – Tzach

+1

Purtroppo non riesco a trovare qualcosa di specifico dopo aver cercato un po '. La motivazione è a http://www.chromium.org/developers/design-documents/layered-components-design. Né la sceneggiatura né la sua iniezione sembrano essere nella fonte di cromo (vedi msg su http://www.chromium.org/developers/how-tos/build-instructions-ios) ma non ho scavato troppo in profondità. – Bruno

+0

Corretto: almeno la fonte è https://chromium.googlesource.com/chromium/src.git/+/master/ios/web/web_state/js/ – Bruno

Problemi correlati