1

我有一个扩展需要弹出一个窗口然后关闭它。

 var my_extension = {
    window: null,
    popup: function(){
       my_extension.window = window.open(...)
    },
    close: function(){
       my_extension.window.close()
    }
 }

弹出窗口调用关闭函数。但是,从打开返回后,my_extension.window 为空。我检查以确保它已在弹出窗口中设置。弹出窗口返回时是否创建了另一个 my_extension 实例?

4

1 回答 1

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

于 2010-11-22T16:34:47.073 回答