捕获 iframe 的控制台日志

新手上路,请多包涵

有没有办法在 iframe 之外捕获控制台?

我正在开发类似于 jsFiddle 的 在线 IDE ,我想让用户选择至少阅读 javascript 控制台的结果。

原文由 Adonis K. Kakoulidis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

如果您不想附加到 HTML,这是另一种解决方案

var console = {
  __on : {},
  addEventListener : function (name, callback) {
    this.__on[name] = (this.__on[name] || []).concat(callback);
    return this;
  },
  dispatchEvent : function (name, value) {
    this.__on[name] = (this.__on[name] || []);
    for (var i = 0, n = this.__on[name].length; i < n; i++) {
      this.__on[name][i].call(this, value);
    }
    return this;
  },
  log: function () {
    var a = [];
    // For V8 optimization
    for (var i = 0, n = arguments.length; i < n; i++) {
      a.push(arguments[i]);
    }
    this.dispatchEvent("log", a);
  }
};

在 iframe 之外

iframe.contentWindow.console.addEventListener("log", function (value) {
  console.log.apply(null, value);
});

原文由 SeanJM 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你想在窗口容器的主体内打印日志消息,可以在那里声明面板:

 var console = {
    panel: $(parent.document.body).append('<div>'),
    log: function(m){
        this.panel.prepend('<div>'+m+'</div>');
    }
};
console.log('message');

原文由 A. Rodas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏