2014-04-04 6 views
9

Ho provato a utilizzare console.log() ma ho bisogno di avere la finestra dello sviluppatore aperta in chrome per vedere l'output. Alert() scrive nella casella pop-up. Voglio uscire alla finestra dei risultati (riquadro in basso a destra) in JSFiddle. Qualcuno può dirmi per favore?Come posso produrre risultati nella finestra 'risultato' in JSFiddle?

Aggiornato con una visuale di risposta di JajaDrinker - grazie per questo.

enter image description here

+0

Possiamo vedere qualche codice? Solo per cercare il problema. Questo può essere dovuto a molte cose. e trovare un esempio di codice che produce il tuo errore non è così facile ^^ – JajaDrinker

+0

Forse console.log? – snowYetis

+0

La finestra dei risultati è proprio ciò che un browser dovrebbe visualizzare. Se stai cercando di stamparlo, dovrai creare un elemento HTML e riempirlo di testo. Suppongo che tu non abbia davvero bisogno di aggiungere un elemento, ma sarebbe come se dovessi stampare sul browser. –

risposta

22

Aggiungere questo alla sezione HTML:

<div id="console-log"></div> 

Aggiungere questo alla sezione JavaScript:

var consoleLine = "<p class=\"console-line\"></p>"; 

console = { 
    log: function (text) { 
     $("#console-log").append($(consoleLine).html(text)); 
    } 
}; 

Facoltativamente, aggiungere questo al CSS per renderlo più user friendly :

.console-line 
{ 
    font-family: monospace; 
    margin: 2px; 
} 

È possibile visualizzare un example here.

+1

Brillante - grazie mille! – davidkelleher

+0

risparmiare un po 'di tempo con 'text = typeof text ===' object '? JSON.stringify (text): text', non devi preoccuparti di ciò che alimenti il ​​log override. – zamnuts

9

Ecco una soluzione discreta, quindi non sarà necessario modificare il codice HTML. Ho usato un tag pre, ma puoi usare qualsiasi tag che vuoi.

console = { 
    _createConsole : function() { 
     var pre = document.createElement('pre'); 
     pre.setAttribute('id', 'console'); 
     document.body.insertBefore(pre, document.body.firstChild); 
     return pre; 
    }, 
    log: function (message) { 
     var pre = document.getElementById("console") || console._createConsole(); 
     pre.textContent += ['>', message, '\n'].join(' '); 
    } 
}; 
  • Esempio JSFiddle con stile CSS.
  • Questo è un version che può essere fornito in bundle come modulo js esterno per un progetto più grande.
+0

Molto, molto bene - imparerò molto da questo, grazie! – davidkelleher

0

ho creato un fork della versione di Pete che mantiene lo stesso tipo di funzionalità discreto ma, in aggiunta, memorizza una copia della console normale e tronchi ad esso pure.

(function() { 
    // Store a copy of the old console, but don't junk up the 
    // global namespace with it either. This allows console 
    // logging in both places. 
    var oldConsole = console; 

    // Use a pre-existing #console element or create a new one. 
    var newConsole = document.getElementById("console") || (function() { 
     var pre = document.createElement('pre'); 
     pre.setAttribute('id', 'console'); 
     document.body.insertBefore(pre, document.body.firstChild); 
     return pre; 
    })(); 

    console = { 
     log: function (message) { 
      var message = ['>', message, '\n'].join(' '); 

      // Log to both consoles... 
      oldConsole.log(message); 
      newConsole.textContent += message; 
     } 
    }; 
})(); 

console.log("This is an unobtrusive version!"); 
console.log("Hello World!"); 
console.log("Test"); 
console.log("Test"); 
console.log("Test"); 
console.log("Test"); 
console.log("Test"); 
console.log("Make it scrollable!"); 

si può vedere una versione funzionante di qui: http://jsfiddle.net/Lanlost/7n6jka2q/