2014-06-05 21 views
8

Konsolos'u dize olarak JavaScript olarak almayı deniyorum. Girişim, bilmediğim bir komut dosyasıdır ve konsoldaki tüm iletileri bir dizeye almak istiyorum. ÖrneğinJavaScript'te dize olarak console.log içeriğini dize olarak alma

: Ben günlüğü uyarmak gerekmez

function doSomething(){ 
    console.log("start"); 
    console.log("end"); 
    var consoleLog = getConsoleLog(); 
    return consoleLog; 
} 

function getConsoleLog(){ 
    // How to implement this? 
} 

alert(doSomething()); 

JSFiddle link

Not - Bu işlevsellik testi sadece basit bir örnektir. Günlüğün içeriğinde bazı işlemler yapmak zorunda kalacağım.

cevap

13

Bunu kullanmadan önce console.log yöntemi üzerine yazabilirsiniz: apply ve arguments kullanma

var logBackup = console.log; 
var logMessages = []; 

console.log = function() { 
    logMessages.push.apply(logMessages, arguments); 
    logBackup.apply(console, arguments); 
}; 

tek çağrıyla birden günlük iletilerini ekleyebilir, yani doğru console.log davranışı korur.

Tüm yeni console.log iletilerini logMessages dizisine itecektir.

+0

Bu, benim için bir "InternalError: çok fazla yineleme" hatası veriyor. –