javascript - 收听(捕获)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 日志。它仅适用于我的应用程序控制台日志。
解决方案
如果 src 是不同的域,并且您不能直接在另一个域上运行代码(例如,通过能够修改或插入 a.js
到其中),那么您无能为力。这是出于安全原因:浏览器不希望在域之间泄漏任何信息,除非信息的发送者故意允许。
如果您可以更改其他域上的代码,则可以对控制台进行猴子补丁并将日志信息传递给父窗口,postMessage
以便父窗口可以对其进行操作。
如果您碰巧试图检查邮件仅供您个人使用(而不是供互联网上的随机人使用),您可以使用用户脚本管理器修改您的浏览器以使用用户脚本在另一个域上运行您的自定义 JavaScript像Tampermonkey。
推荐阅读
- jquery - JQuery 在 td 类中找到一个按钮
- asp.net-mvc - 从 IIS Express 运行 REST 网站返回 404 Not found
- xamarin.forms - Xamarin.Forms + ReactiveUI 导航,IRoutableViewModel 删除/隐藏包含 UrlPathSegment 内容的标题栏
- scala - 在 for 理解中混合 Future 和 F[]
- node.js - 连接到 MongoDb 在线数据库时出现问题
- reactjs - 如何在 React Native Webview 组件中使用 Reactjs 库
- javascript - 如何创建一个对象,其方法将调用传递给最终将实现它们的承诺?
- javascript - Javascript:向多个值对象添加键
- fpga - 如何使用 TDEST 复用 AXI 流?
- python - Pandas Dataframe Replace 不适用于子句