Javascript 如何在控制台中隐藏来自iFrame的消息

Javascript 如何在控制台中隐藏来自iFrame的消息,javascript,html,google-chrome,Javascript,Html,Google Chrome,我正在使用console.log(…)进行调试。不过,控制台也从iframe获取消息(我在HTML代码中使用iframe)。如何仅查看我发送的日志而不查看来自iFrame的日志?您可以按源筛选日志/从您自己的脚本以外的脚本中隐藏日志。当然,只有从少量脚本获取日志时,它才是一个解决方案 您可以在要查看日志的页面脚本标记的src属性中添加类似于“?nofrm=1”的内容。然后在Chrome中,您可以在过滤器中键入“nofrm”以仅从脚本中获取日志。如果还想记录内联脚本,请将“?nofrm=1”添加到

我正在使用
console.log(…)
进行调试。不过,控制台也从iframe获取消息(我在HTML代码中使用iframe)。如何仅查看我发送的日志而不查看来自iFrame的日志?

您可以按源筛选日志/从您自己的脚本以外的脚本中隐藏日志。当然,只有从少量脚本获取日志时,它才是一个解决方案


您可以在要查看日志的页面脚本标记的src属性中添加类似于“?nofrm=1”的内容。然后在Chrome中,您可以在过滤器中键入“nofrm”以仅从脚本中获取日志。如果还想记录内联脚本,请将“?nofrm=1”添加到url。

在JavaScript中添加一个片段以捕获iFrame抛出的错误如何

您可以用IFRAME抛出的错误替换
[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>
x未定义
y没有定义
window.onerror=函数(消息、url、行){
if(msg==“未捕获引用错误:未定义x”){
返回真值
}
否则{
//无所事事
}
}
函数myfunction(){
控制台日志(x);
}
函数myfunction2(){
控制台日志(y);
}

在本例中,单击第一个按钮时,您将看到控制台中不会输出错误,但单击第二个按钮时,您将看到错误。

我为客户端编写了一个记录器服务。我使用了一种模式,通过它我可以过滤掉由脚本而不是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:”的模式

这是一篇很老的帖子,但对于那些来这里寻求帮助的人来说:

在Chrome中,您可以选中“仅选择上下文”选项,它将是这样的。

只需过滤(使用Chrome的过滤框)iFrame中的日志消息即可

在Chrome的控制台选项卡中,你有一个过滤器框,在那里输入你想要归档的文件名,在文件名前加一个减号“-”。 可以使用空格作为分隔符过滤多个文件

例如:

-LogUtil.js-FrameService.js



或者,只需右键单击日志消息,然后选择
Hide message from

,而不是键入,这可能与您正在查找的内容类似:一种可能的解决方法是使用
console.info
console.debug
,然后过滤消息类型。谢谢@Kruga。这不是确切的解决方案,但对我来说很有效。另一种解决方法是使用模式预先处理所有
控制台
日志,然后使用正则表达式进行筛选them@rramakrishnaaiframe是否始终与父页面位于同一域中,还是您将使用第三方域/页面?@pseudosavant其中一个iframe和主页将位于同一域中。但是,它们是来自我页面上不同域的多个iframe