2010-11-25 14 views
2

In Elternteil eine verschachtelte Funktion aufrufen:Wie kann ich in einem übergeordneten Dokument aus einem Iframe

function outer(){ 
    function inner(){ 
     alert("hello"); 
    } 
} 

in iframe

parent.outer.inner(); 

funktioniert nicht.

Edit: So sind sie privat. Kein Problem. Der Grund dafür besteht darin, diese Funktionen so weit wie möglich aus dem globalen Gültigkeitsbereich auszublenden. Ich dachte, sie hinter einen einzigen Funktionsnamen mit einem ziemlich eindeutigen Namen zu setzen, wäre der beste Weg, dies zu tun.

Im Wesentlichen muss ich

parent:

function outer(action){ 

    if(action == "inner") 
     inner() 

    function inner(){ 
     alert("hello"); 
    } 
} 

iframe: parent.outer ("innere");

Gibt es eine elegantere Art, dies zu tun?

+1

Wenn Sie die innere() -Funktion soll von außerhalb der äußeren() Funktion aufgerufen werden kann, müssen Sie machen ein Verweis darauf durch Schließung. –

Antwort

-1

Ein Ansatz recht gut zu beantworten, wird unter Verwendung eines Objekts

function Outer(){ 
    this.inner = function(){ 
     alert("hello"); 
    } 
} 

var o = new Outer() 
o.inner(); 
0

Unter Verwendung des Verschlusses:

function outer(){ 
     function inner(){ 
     alert("I am Inner"); 
     } 
     return inner ; 
    } 
    var x = outer(); 
    x(); 

Wenn Sie Variable Innen Funktion verwenden, als wir auf diese Weise tun können:

function outer(){ 
     function inner(){ 
     var y=10; return y;  
     } 
     return inner ; 
} 
var x = outer(); 
x(); 
Verwandte Themen