检测到console.warn消息

时间:2018-12-19 03:16:29

标签: javascript

我需要确定何时将警告(不是错误)消息发送到浏览器的console.log。通过研究,我知道我可以使用类似于以下代码的JavaScript代码检测错误消息:

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);
}

但这只会显示错误消息。它不会显示任何警告消息。

在console.log中是否有类似的方法来检测特定的警告消息?或者,是否有一些JS代码可以让我在console.log中搜索特定的字符串?

请注意,我可以在浏览器的调试(控制台记录)窗口中看到警告消息。但是我想“拦截”警告消息,并在发现警告时执行一些操作。

已添加

目的是找出何时出现特定的警告消息;该消息类似于"Loading failed for the <script> with source "https://www.example.com/js/somescript.js" .

但是有关如何拦截浏览器(不是我的代码)输出的警告消息(不是错误;我包含的代码可以做到这一点)的问题。

已添加

所以,这就是我所需要的。假设此代码

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

您将编写什么代码来查看该消息是否作为警告写到控制台?

3 个答案:

答案 0 :(得分:1)

如何覆盖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");

答案 1 :(得分:1)

您正在谈论的警告是由浏览器而不是console.warn生成的。这就是为什么您不能覆盖它的原因。最有可能的是,您需要为所需的每个事件手动添加侦听器。例如,如果要处理脚本加载错误,请使用onerror事件:

<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>

答案 2 :(得分:0)

已经很晚了,但这实际上是直接回答您问题的答案。

var originalConsoleWarn = console.warn;
console.warn = function(message) {
  doSomethingWithWarn(message);
  originalConsoleWarn(message);
};

function doSomethingWithWarn(message){
  console.log("DOING SOMETHING WITH: " + message);
}

console.warn("hi");