我需要确定何时将警告(不是错误)消息发送到浏览器的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!");
您将编写什么代码来查看该消息是否作为警告写到控制台?
答案 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");