我正试图捕获一个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日志不起作用它只适用于我的应用控制台日志
如果src是一个不同的域,并且你不能在另一个域上直接运行代码(例如,通过修改或插入.js
(,那么你就无能为力了。这是出于安全原因:浏览器不想在域之间泄露任何信息,除非信息的发送者故意允许。
如果你可以更改另一个域上的代码,你可以对控制台进行猴痘,让它用postMessage
将日志信息传递给父窗口,这样父窗口就可以用它做点什么。
如果你碰巧试图检查消息仅供个人使用(而不是供互联网上的随机用户使用(,你可以使用Tampermonkey这样的用户脚本管理器,修改浏览器,在另一个域上使用用户脚本运行自定义JavaScript。