假设我在浏览器中运行我的Javascript项目并且我在特定模块中,我可以检查是否已经消息打印到控制台?即从控制台读取消息......
例如我在我的js.file里面的函数里想检查是否已经在控制台中打印了hello world。
答案 0 :(得分:1)
您可以随时为" console.logging"定义自己的功能。一条或多条消息(如果这是你正在做的事情),并在这个函数中有一个布尔值来处理这类事情。
我敢打赌它不是"最佳实践",但它会在一定程度上解决你的问题。
var messageSent = false;
var myConsoleLog = function($strMessage){
if (!messageSent) {
console.log($strMessage);
messageSent = true;
} else {
// Do whatever you feel like
}
};
当然,如果您需要检查更多案例,则需要更改该功能以实际跟踪更多消息。 :)
答案 1 :(得分:1)
jthanto的回答给了我一个主意。我不认为这是一种很好的做法,但如果必须,你可以定义自己的控制台类:
var MyConsole = function(oldConsole) {
// store all messages ever logged
this.log = [];
// keep a pointer to oldConsole
this.oldConsole = oldConsole;
}
MyConsole.prototype.log = function(args) {
// push the message into log
this.log.push(Array.prototype.join.call(args));
// call oldConsole.log to actually display the message on the console
if (this.oldConsole)
this.oldConsole.log.apply(this.oldConsole, args);
}
// TODO: implement all other console methods in this fashion (apply for all console API methods)
MyConsole.prototype.<method> = function(args) {
if (this.oldConsole)
this.oldConsole.<method>.apply(this.oldConsole, args);
}
// method to check if something was printed
MyConsole.prototype.wasLogged(message) {
return this.log.indexOf(message)!==-1;
}
// replace console with an instance of MyConsole, pointing to the old console
console = new MyConsole(console);
将其保存在文件中并先加载(位于代码顶部)
使用它像:
if (console.wasLogged("Hello World"))
doStuffz();
希望它有所帮助。请注意,它没有经过测试,但应该给你一些指示:)
答案 2 :(得分:0)
通常无法完成。查看Chrome控制台的API: https://developer.chrome.com/devtools/docs/console-api
但是这个实验性的Chrome功能可以解决您的问题:https://developer.chrome.com/extensions/experimental_devtools_console
不幸的是,看起来其他浏览器没有这样的工具。