我有一个扩展程序,需要弹出一个窗口然后关闭它。
var my_extension = {
window: null,
popup: function(){
my_extension.window = window.open(...)
},
close: function(){
my_extension.window.close()
}
}
弹出窗口调用close函数。但是,从open打开后,my_extension.window为null。我检查以确保它设置为弹出窗口。弹出窗口返回时是否创建了另一个my_extension实例?
答案 0 :(得分:0)
my_extension在主浏览器窗口中定义,而不是在弹出窗口中定义。要从弹出窗口本身关闭弹出窗口,只需使用window.close
编辑:好的,所以我猜my_extension.close
实际上看起来像是:
function() {
// check input from popup window
if (everythingIsGood) {
my_extension.window.close()
}
}
在这种情况下,我建议你在弹出窗口中进行验证。我知道,你不想在弹出窗口中放入很多代码。并且我同意。但是,当您打开弹出窗口时,您可以传入进行验证所需的任何信息(包括传递验证函数 - 记住函数也是对象,因为JavaScript很酷!)在此页面上查看window.arguments
的讨论:https://developer.mozilla.org/en/DOM/window.openDialog