我如何将console.log转到父窗口?

时间:2017-08-22 08:57:57

标签: javascript jquery

我有一个基本上刷新表的函数,它运行正常,但是某些JS函数没有运行。调试我试图在弹出窗口和它的父窗口之间传递数据。目前我有这个功能:

$.fn.runFncs = function(isParent)
{
    if (isParent == 1) {
        window.opener.$.fn.compareDates();
        window.opener.$.fn.addStatusIcon();
        window.opener.$.fn.iconTooltips(1);
        window.opener.$.fn.iconTooltips(2);
        window.opener.console.log('test');
    } else {
        $.fn.compareDates();
        $.fn.addStatusIcon();
        $.fn.iconTooltips(1);
        $.fn.iconTooltips(2);
    }
};

这会在ajax成功的基础上运行。

当我点击ajax的按钮时,我得到了我的成功消息等但在我的父窗口中没有console.log。在使用window.opener之前,我已经能够访问父窗口,它似乎运行正常,但这次不是出于某种原因。

我尝试过研究,但要么我的查询太具体,要么就是简单的“什么是console.log”问题,所以有点卡在这里。

我可以用另一种方法将console.log转到父窗口吗?也许是我不知道的文件功能?

谢谢! :)

3 个答案:

答案 0 :(得分:2)

您无法直接从一个窗口/选项卡访问其他控制台对象,但您可以将消息从一个窗口发送到另一个窗口。父窗口将获取该消息,然后它将在控制台上写入它。有关详细信息,请参阅this Q&A

答案 1 :(得分:1)

function log(message){
    console.log(message);
}

将该功能放在父窗口中并像这样调用它。您基本上需要提供可以访问

的包装函数

window.opener.log("Hi");

答案 2 :(得分:0)

我也在最近(2018年8月)尝试了Firefox,Chrome,Opera和IE11,window.opener.console.log在所有这些工具中均能完美运行。所以我认为问题出在代码的其他地方。

您甚至可以在父窗口中执行child.console = console并保留console.log,但是大多数浏览器会清除两次页面加载之间的变量,并且无法在文档创建后立即再次进行设置。创建,但在执行脚本之前。如果可以编辑,可以将window.console = window.opener.console添加到子页面的标题。那也应该可以解决问题。