2016-03-02 130 views
15

我正在使用console.log(...)进行调试。然而,控制台也从iframe获取消息(我在我的HTML代码中使用iframe)。我怎样才能看到我发送的日志,而不是来自iframe的日志?如何在控制台中隐藏来自iframe的消息

+2

你正在寻找这可能是类似于:http://superuser.com/questions/394213/how-can-i-suppress- chrome-extension-output-from-web-inspectors-console-log –

+3

可能的解决方法是使用'console.info'或'console.debug'代替,然后过滤消息类型。 – Kruga

+0

谢谢@Kruga。它不是确切的解决方案,但它的作品适合我。另一个解决方法是预先安排所有具有模式的“控制台”日志,然后使用正则表达式来过滤它们 – rramakrishnaa

回答

1

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

0

您可以通过源/隐藏自己以外的脚本过滤日志。这当然会仅是一个解决办法,如果你从脚本的数量较少获取日志

Filter by source

1

您可以添加类似“?nofrm = 1”的网页的脚本标签的src属性要查看日志。然后在Chrome中,您可以在筛选器中键入“nofrm”以仅从它们的脚本获取日志。如果您还想记录内嵌脚本,请在URL中添加“?nofrm = 1”。

2

如何在JavaScript中添加片段来捕获由iFrame引发的错误?

您可以用您的iFrame正在抛出的错误代替[IFRAME ERROR MESSAGE]。如果片段从捕获的iFrame一个错误,它会做什么,否则,它将输出错误控制台:

window.onerror = function (msg, url, line) { 
    if (msg == "[IFRAME ERROR MESSAGE]") { 
     return true 
    } 
    else { 
     //do nothing 
    } 
} 

确保尽早把这个代码在您的脚本。

Reference

Reference 2

工作示例(保存为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> 

在这个例子中,你会看到,没有错误会当您单击第一个按钮时在控制台中输出,但在单击第二个按钮时将看到错误。