2016-03-02 15 views
15

Używam do celów debugowania console.log(...). Jednak konsola pobiera również wiadomości z elementów iframe (używam elementów iframe w moim kodzie HTML). Jak mogę wyświetlić tylko te dzienniki, które wysłałem, a nie dzienniki pochodzące z elementów iframe?Jak ukryć wiadomości w konsoli, które pochodzą z elementów iframes

+2

To może być podobne do tego, co szukasz: http://superuser.com/questions/394213/how-can-i-suppress- chrome-extension-output-from-web-inspectors-console-log –

+3

Możliwe obejście polegałoby na użyciu polecenia 'console.info' lub' console.debug', a następnie przefiltrowanie typów wiadomości. – Kruga

+0

Dzięki @Kruga. Nie jest to dokładne rozwiązanie, ale działa dla mnie. Innym obejściem byłoby uprzedzenie wszystkich logów 'konsoli' wzorcem, a następnie użycie regex do filtrowania ich. – rramakrishnaa

Odpowiedz

1

Napisałem usługę rejestratora po stronie klienta. Użyłem wzorca, za pomocą którego mogę odfiltrować logi/błędy itp., Które są tworzone przez mój sscript, a nie przez iframe.

function logger(){ 
    var pattern="PC:"; 
    var info=function(){ 
     Array.prototype.unshift.apply(arguments, [pattern]); 
     console.info.apply(console, arguments); 
    } 
     var log=function(){ 
     Array.prototype.unshift.apply(arguments, [pattern]); 
     console.log.apply(console, arguments); 
    } 
    var warning=function(){ 
     Array.prototype.unshift.apply(arguments, [pattern]); 
     console.warn.apply(console, arguments); 
    } 
    var debug=function(){ 
     Array.prototype.unshift.apply(arguments, [pattern]); 
     console.debug.apply(console, arguments); 
    } 
    var error=function(){ 
     Array.prototype.unshift.apply(arguments, [pattern]); 
     console.error.apply(console, arguments); 
    } 
    return { 
     info:info, 
     log:log, 
     warning:warning, 
     debug:debug, 
     error:error 
    } 
} 

Tutaj "PC" jest wzór

0

Możesz filtrować dzienniki według źródeł/ukryć z innych skryptów niż własne. Będzie to oczywiście być tylko rozwiązanie, jeśli uzyska logi z mniejszej liczby skryptów

Filter by source

1

Można dodać coś takiego? „nofrm = 1” do atrybutu src tagów skryptu strona, do którego chcesz zobacz logi dla. Następnie w Chrome możesz wpisać "nofrm" w filtrze, aby uzyskać logi tylko z tych skryptów. Dodaj "? Nofrm = 1" do adresu URL, jeśli chcesz również logować skrypty wbudowane.

2

Co powiesz na dodanie fragmentu kodu JavaScript do łapania błędów generowanych przez iFrames?

Możesz zastąpić [IFRAME ERROR MESSAGE] błędami, które rzuca iFrame. Jeśli fragment łapie błąd z iFrame, to nie robić nic, poza tym, że będzie wyjście błędu do konsoli:

window.onerror = function (msg, url, line) { 
    if (msg == "[IFRAME ERROR MESSAGE]") { 
     return true 
    } 
    else { 
     //do nothing 
    } 
} 

Upewnij się umieścić ten kod jak najszybciej, w skrypcie.

Reference

Reference 2

przykład roboczych (zapisać go jako test.html i otwarte w Chrome):

<button onclick="myfunction()">x is not defined</button> 
<button onclick="myfunction2()">y is not defined</button> 

<script> 
window.onerror = function (msg, url, line) { 
    if (msg == "Uncaught ReferenceError: x is not defined") { 
     return true 
    } 
    else { 
     //do nothing 
    } 
} 
function myfunction(){ 
    console.log(x); 
} 
function myfunction2(){ 
    console.log(y); 
} 

</script> 

W tym przykładzie widać, że nie ma błędów będzie wyprowadzane w konsoli po kliknięciu pierwszego przycisku, ale pojawią się błędy po kliknięciu drugiego przycisku.

Powiązane problemy