我在使用 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");
}

最佳答案

编辑:请将此视为评论。

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

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

关于javascript - 带有自定义功能的 window.opener 在 Safari 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32639654/

10-11 22:00