2010-11-22 16 views
1

Ich habe eine Erweiterung, die ein Fenster öffnen und dann schließen muss.Objekt Literal in Firefox-Erweiterung

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

Das Popup ruft die Close-Funktion auf. Nach der Rückkehr aus dem Open ist das my_extension.window jedoch null. Ich überprüfe, ob es im Popup-Fenster steht. Wird eine weitere my_extension-Instanz erstellt, wenn das Popup-Fenster zurückkehrt?

Antwort

0

my_extension wird im Hauptfenster des Browsers definiert, nicht im Popup. Um das Popup aus dem Popup selbst zu schließen, verwenden Sie einfach window.close

edit: ok, also denke ich my_extension.close sieht tatsächlich so etwas wie:

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

In diesem Fall würde ich empfehlen Sie tun, dass die Validierung in das Popup selbst. Ich weiß, du willst nicht viel Code in das Popup-Fenster stecken. Und ich stimme zu. Aber Sie können alle Informationen eingeben, die für die Validierung erforderlich sind (einschließlich der Übergabe einer Validierung Funktion - denken Sie daran, dass Funktionen auch Objekte sind, weil JavaScript so cool ist!), Wenn Sie das Popup öffnen. Suchen Sie nach der Diskussion von window.arguments auf dieser Seite: https://developer.mozilla.org/en/DOM/window.openDialog

+0

Ich möchte nur das Popup schließen, wenn die eingegebenen Daten von der Firefox-Erweiterung validiert wurden. Deshalb möchte ich das Popup von der Firefox-Erweiterung schließen können. – Alexis

Verwandte Themen