首页 > 解决方案 > 收听(捕获)iframe 控制台日志

问题描述

我正在尝试捕获我无权访问其源代码及其实现的 iframe 的控制台日志。

 <iframe src="an http address" name="my-iframe"  allowFullScreen/>

当 iframe 记录数据时,我会在控制台中看到它们。但问题是,

这段代码

// define a new console
var console = (function(oldCons){
    return {
        log: function(text){
            oldCons.log(text);
            if(text === "hi"){
              alert("text")
            }
        },
        info: function (text) {
            oldCons.info(text);
            if(text === "hi"){
              alert("text")
            }
        },
        warn: function (text) {
            oldCons.warn(text);
            if(text === "hi"){
              alert("text")
            }
        },
        error: function (text) {
            oldCons.error(text);
            if(text === "hi"){
              alert("text")
            }
        }
    };
}(window.console));

//Then redefine the old console
window.console = console;

我从这篇文章 中得到的不适用于 iframe 日志。它仅适用于我的应用程序控制台日志。

标签: javascript

解决方案


如果 src 是不同的域,并且您不能直接在另一个域上运行代码(例如,通过能够修改或插入 a.js到其中),那么您无能为力。这是出于安全原因:浏览器不希望在域之间泄漏任何信息,除非信息的发送者故意允许。

如果您可以更改其他域上的代码,则可以对控制台进行猴子补丁并将日志信息传递给父窗口,postMessage以便父窗口可以对其进行操作。

如果您碰巧试图检查邮件仅供您个人使用(而不是供互联网上的随机人使用),您可以使用用户脚本管理器修改您的浏览器以使用用户脚本在另一个域上运行您的自定义 JavaScript像Tampermonkey


推荐阅读