具有自定义功能的window.opener在Safari中不起作用

时间:2015-09-17 20:44:32

标签: javascript safari window.open window.opener

我遇到了Safari的问题,特别是没有从父窗口中找到window.opener函数。我打电话的功能在Chrome和Firefox中运行良好。有人有任何提示吗?

窗口1(父级)

使用以下内容打开窗口2:

window.open(requestUrl, "_blank", "width=440, height=500, scrollbars");

窗口2(弹出窗口)

请求url页面返回后,将调用以下内容:

window.parent.opener.callBackIntegrationCompleted("testing");
window.close();

我在第一行收到以下错误:

TypeError: undefined is not a function (evaluating 'window.parent.opener.callBackIntegrationCompleted("testing")')

注意:我尝试过window.opener,parent.window.opener和window.parent.opener的一些变体。

窗口1(父级)回调

打开弹出窗口的原始父窗口具有以下JS功能,但它永远不会到达这一点。

function callBackIntegrationCompleted(code) {
    console.log("got here");
}

1 个答案:

答案 0 :(得分:2)

编辑:请将此视为评论。

function callBackIntegrationCompleted(code) {
    console.log("got here");
}
window.callBackIntegrationCompleted = callBackIntegrationCompleted;

在调用eval()内部使参数字符串中的函数成为窗口的属性。如果使用eval()定义回调函数,则可能是一个问题