我正在使用console.log(...)
进行调试。然而,控制台也从iframe获取消息(我在HTML代码中使用iframe)。我怎样才能看到我发送的日志而不是iframe中的日志?
答案 0 :(得分:3)
如何在JavaScript中添加代码段以捕获iFrame引发的错误?
您可以将[IFRAME ERROR MESSAGE]
替换为您的iFrame投掷的错误。如果代码段从iFrame中捕获错误,它将不执行任何操作,否则,它会将错误输出到控制台:
window.onerror = function (msg, url, line) {
if (msg == "[IFRAME ERROR MESSAGE]") {
return true
}
else {
//do nothing
}
}
请务必尽早将此代码放入脚本中。
工作示例(将其另存为test.html并以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>
在此示例中,您将看到单击第一个按钮时控制台中不会输出任何错误,但是当您单击第二个按钮时将看到错误。
答案 1 :(得分:1)
您可以添加类似&#34;?nofrm = 1&#34;要查看日志的页面标记的src属性。然后在Chrome中,您可以输入&#34; nofrm&#34;进入过滤器只从他们脚本获取日志。添加&#34;?nofrm = 1&#34;如果你想记录内联脚本,也可以使用url。
答案 2 :(得分:1)
我为客户端编写了一个记录器服务。我使用了一种模式,通过该模式我可以过滤掉由我的sscript而不是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
}
}
这里“PC:”是模式
答案 3 :(得分:1)
这是一个古老的帖子,但对于那些会来这里寻求帮助的人来说还是这样:
在Chrome中,您可以选中“仅选定上下文” (screenshot here)选项,就这样。
答案 4 :(得分:1)
只需(使用Chrome的过滤器框)从iFrame中过滤日志消息即可。
在Chrome的“控制台”选项卡中,有一个“过滤器”框,在其中键入要归档的文件名,并在文件名前加上减号“-”。 您可以使用空格作为分隔符来过滤乘法文件。
例如:
-LogUtil.js -FrameService.js
或者不用输入,只需右键单击一条日志消息,然后选择Hide message from <file_name>
。
答案 5 :(得分:0)