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