Object Literal в расширении Firefox - PullRequest
1 голос
/ 22 ноября 2010

У меня есть расширение, которое должно открыть окно и затем закрыть его.

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

Всплывающее окно вызывает функцию закрытия.Однако после возвращения из открытого окна my_extension.window имеет значение null.Я проверяю, чтобы убедиться, что он установлен во всплывающем окне.Создается ли еще один экземпляр my_extension, когда всплывающее окно возвращает?

1 Ответ

0 голосов
/ 22 ноября 2010

my_extension определяется в главном окне браузера, а не во всплывающем окне. Чтобы закрыть всплывающее окно из самого всплывающего окна, просто используйте window.close

edit: ок, так что я думаю my_extension.close на самом деле выглядит примерно так:

function() {
  // check input from popup window
  if (everythingIsGood) {
    my_extension.window.close()
  }
}

В этом случае, я бы порекомендовал вам сделать это в самом всплывающем окне. Я знаю, вы не хотите помещать много кода во всплывающее окно. И я согласен. Но вы можете передать любую информацию, необходимую для проверки (включая передачу проверки function - помните, что функции тоже являются объектами, потому что JavaScript такой крутой!) При открытии всплывающего окна. Смотрите обсуждение window.arguments на этой странице: https://developer.mozilla.org/en/DOM/window.openDialog

...