关闭时将数据返回给父级的弹出窗口

IT技术 javascript jquery popup
2021-02-03 18:42:10

我有一个使用window.open(). 我现在想要的是让用户能够点击这个新窗口中的 2 个链接之一:“允许”或“不允许”。

当用户点击这些链接之一的“弹出式”窗口应关闭,并返回“允许”或“不允许”或沿着这些线路的东西,true/false会做,父窗口。

是否可以?如果是这样,如何?

代码:

var authWindow = window.open('auth.php', 'authWindow', 'options...');

那么里面只有2个锚点auth.php

2个回答

在调用(父)窗口中添加这样的 JS 代码:

function HandlePopupResult(result) {
    alert("result of popup is: " + result);
}

在子窗口代码中添加:

function CloseMySelf(sender) {
    try {
        window.opener.HandlePopupResult(sender.getAttribute("result"));
    }
    catch (err) {}
    window.close();
    return false;
}

并有这样的链接来关闭弹出窗口:

<a href="#" result="allow" onclick="return CloseMySelf(this);">Allow</a>
<a href="#" result="disallow" onclick="return CloseMySelf(this);">Don't Allow</a>
函数 CloseMySelf 导致错误,因为链接只是直接转到 # 并且窗口没有关闭。
2021-03-20 18:42:10
@SteveK 更好地分离逻辑和代码,因为“允许”和“禁止”是元素本身的一部分,至少在我看来。还提供了更好的灵活性,例如,如果我们将来想使用更多参数,只需从元素本身读取它们。
2021-03-30 18:42:10
好奇:是否有理由不将“允许”或“禁止”作为参数传递给 CloseMySelf() 函数?使用结果属性设计有什么好处?
2021-04-02 18:42:10
如果父页面和子页面在同一台服务器上,这才有效,对吗?
2021-04-02 18:42:10
@Joey 抱歉,我的代码中有错误.. 现在看。(在 JavaScript 中,catch必须有以下括号)
2021-04-09 18:42:10

你可以用window.opener这个。