javascript ispeziona - Strumenti per gli sviluppatori di Safari: come preservare il registro della console durante la navigazione?





cosa pagina (4)


No, non esiste questa funzionalità (almeno in Safari 5.0). Guardando alcuni risultati di Google, non penso che questa funzione esista in nessuna versione di Safari.

Quando si utilizza Safari Web Inspector per leggere l'output della console JavaScript, il registro viene reimpostato sulla navigazione, ovvero passando dalla pagina index.html a mail.html si cancella l'output della console. Negli Strumenti per sviluppatori di Chrome , posso facilmente conservare il registro facendo clic con il pulsante destro del mouse sullo spazio della console e selezionando Mantieni registro su navigazione . Con questa opzione, l'output del log della console rimane intatto fino a quando non si cancella manualmente l'output semplificando il processo di debug di JavaScript che si aggiorna o reindirizza a un'altra pagina.

Esiste una funzione simile in Safari Web Inspector?




Non so quando questo è stato aggiunto, ma è presente in Safari su El Capitan (Safari 9.0). Funziona come in Chrome (fai clic con il pulsante destro del mouse nella finestra della console e seleziona "Mantieni accesso alla navigazione").

Aggiornamento: come da risposta di Daniel Compton , in Safari 11+ ora è sotto l'icona delle impostazioni come 'Console: Cancella quando la pagina naviga'.




In Safari 11 questo è passato al pannello Impostazioni sotto "Console: Cancella quando la pagina naviga". Ha anche un'impostazione sorella "Rete: Cancella quando la pagina naviga".




Ecco la mia classe wrapper console. Mi dà anche l'output della portata per rendere la vita più facile. Notare l'uso di localConsole.debug.call() modo che localConsole.debug eseguito nell'ambito della classe chiamante, fornendo l'accesso al relativo metodo toString .

localConsole = {

    info: function(caller, msg, args) {
        if ( window.console && window.console.info ) {
            var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
            if (args) {
                params = params.concat(args);
            }
            console.info.apply(console, params);
        }
    },

    debug: function(caller, msg, args) {
        if ( window.console && window.console.debug ) {
            var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
            if (args) {
                params = params.concat(args);
            }
            console.debug.apply(console, params);
        }
    }
};

someClass = {

    toString: function(){
        return 'In scope of someClass';
    },

    someFunc: function() {

        myObj = {
            dr: 'zeus',
            cat: 'hat'
        };

        localConsole.debug.call(this, 'someFunc', 'myObj: ', myObj);
    }
};

someClass.someFunc();

Questo dà un risultato simile a Firebug :

In scope of someClass.someFunc(), myObj: Object { dr="zeus", more...}

O Chrome:

In scope of someClass.someFunc(), obj:
Object
cat: "hat"
dr: "zeus"
__proto__: Object




javascript debugging safari console developer-tools