我有一个基本上刷新表的函数,它运行正常,但是某些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转到父窗口吗?也许是我不知道的文件功能?
谢谢! :)
答案 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
添加到子页面的标题。那也应该可以解决问题。