【发布时间】:2012-06-01 12:12:45
【问题描述】:
我希望我的功课做得很好,在网上搜索了最后几个小时并尝试了所有方法,然后才发到这里,但我真的差点认为这是不可能的,所以这是我最后的选择。
我想要一个简单的东西(但在 JavaScript 中似乎很难):
- 单击按钮 -> 打开窗口(使用 window.open)
- 在弹窗中执行一个动作并将值返回给父级(开启者)
但我想以系统的方式实现它,为此弹出窗口定义一个回调;类似:
var wnd = window.open(...)
wnd.callback = function(value) {
console.log(value);
};
我尝试在弹窗JS代码中定义回调属性:
var callback = null;
不幸的是,这不起作用,因为...
$('#action').click(function() {
console.log(callback);
});
...返回我最初设置的那个“null”。
我还尝试在窗口加载后在父窗口中设置回调(通过 window.onload=... 和 $(window).ready()),但没有成功。
我也尝试在子窗口源代码中定义一些方法来在内部注册回调:
function registerCallback(_callback)
{
callback = _callback; // also window.callback = _callback;
}
但结果相同。
而且我没有更多的想法。当然,使用 window.opener 设置值很简单,但我会失去这个子窗口所需的大部分灵活性(实际上是 DAM 系统的资产选择器)。
如果您有一些想法,请分享。 谢谢你一百万!
【问题讨论】:
标签: javascript callback popup window