javascript - Upptäck ett console.warn-meddelande


Jag har ett behov av att ta reda på när ett varningsmeddelande (inte fel) skickas till webbläsarens console.log. Från forskning vet jag att jag kan upptäcka felmeddelanden med JavaScript-kod liknande denna:

window.onerror = function(errorMsg, url, lineNumber){
    // any action you want goes here
    // errorMsg is the error message itself.
    // url should be the file presenting the error, though i have
    //    found that it only presents to me the address of the site.
    // lineNumber is the line number the error occoured on.
    // here is an example of what you could do with it:
    alert("Error in " + url + " at " + lineNumber + ":\n" + errorMsg);
}

Men det visar bara fel-meddelanden. Det kommer inte att visa några varnings-meddelanden.

Finns det ett liknande sätt att upptäcka ett specifikt varningsmeddelande i console.log? Eller, alternativt, finns det någon JS-kod som låter mig söka i console.log efter en specifik sträng?

Observera att jag kan se varningsmeddelandet i webbläsarens felsökningsfönster (konsolloggning). Men jag vill 'avlyssna' varningsmeddelandet och utföra någon åtgärd om den varningen hittas.

Tillagd

Avsikten är att ta reda på när ett specifikt varningsmeddelande uppstår; meddelandet är liknande "Loading failed for the <script> with source "https://www.example.com/js/somescript.js" .

Men frågan om hur man fångar ett varningsmeddelande (inte ett fel; koden jag inkluderade gör det) som skickas ut av webbläsaren (inte min kod).

Tillagd

Så, här är vad jag behöver. Anta denna kod

console.warn("Here is a warning!");

Vilken kod skulle du skriva för att se om det meddelandet skrevs till konsolen som en varning?

Svar #1

De varningar du pratar om genereras av webbläsaren, inte av console.warn. Det är därför du inte kan åsidosätta den. Mest sannolikt behöver du manuellt lägga till lyssnare för varje händelse du behöver. Till exempel, om du vill hantera ett skriptladdningsfel, använd onerror-händelsen:

<script src="https://www.example.com/js/somescript1.js" onerror="console.log('Cannot load script from ' + this.src)"></script>
<script src="https://www.example.com/js/somescript2.js" onerror="console.log('Cannot load script from ' + this.src)"></script>

Svar #2

Vad sägs om att skriva över console.log()?

let tmpConsoleLog = console.log;
console.log = function(msg){
    // Intercept code goes here using msg variable
    alert(msg);
    // then perform the normal logging
    tmpConsoleLog(msg);
}

console.log("Something");