2011-01-03 12 views
1

Ich bin neu bei Adobe Air, so könnte die Frage offensichtlich sein, aber ich konnte nicht für Tage arbeiten mit ihm kämpfen.So laden Sie externe ExtJS gebaut App in Air Sandbox

Ich versuche eine Anwendung mit Luft zu erstellen, die den eingebetteten erforderlichen Code enthält, um den Startprozess zu erstellen und Laufzeit benötigte Ressourcen von der bereitgestellten Webanwendung abzurufen und es in der Hauptanwendung zu injizieren. Ich habe die zwei verschiedenen Sandboxes erstellt (Eltern-Sandbox für die Haupt-App und einen Iframe als Kind-Sandbox für die bereitgestellte App). hier ist das, was ich getan habe:

air.html

<html> 
<head> 
    ... 
    <script type="text/javascript" src="/scripts/app/load.js"></script> 
</head> 

<body id="baseBody" onload="Load.init();"> 
    <iframe 
     id="sandbox" 
     sandboxRoot="http://localhost:8080/webapp/" 
     style="width:0;height:0;display:none;" 
     ondominitialize="Load.bridge();"> 
    </iframe> 
</body> 
</html> 

load.js (Parent Sandbox)

Load = function() { 
    return { 
     sandbox: null, 
     bridge: function() { 
     document.getElementById('sandbox').contentWindow.parentSandboxBridge = { 
      initChild: function() { 
       sandbox = document.getElementById('sandbox').contentWindow.childSandboxBridge; 
       sandbox.loadSignin(); 
       sandbox.buildParent(); 
      }, 
      buildBase: function() { 
       signin = new App.Signin({ 
        ... 
       }); 
       new Ext.air.Window({ 
        ... 
        items: [signin], 
        ... 
       }); 
      }, 
      importing: function(url) { 
       // Creating Script tag and Append it to Head tag 
      } 
     }; 
     }, 
     init: function() { 
     document.getElementById('sandbox').src = './load'; 
     } 
    }; 
}(); 

Last (JSP auf Kind Sandbox)

<html> 
<head> 
    <script type="text/javascript" src="http://localhost:8080/webapp/scripts/app/load.js"></script> 
</head> 

<body onload="Load.init();"></body> 
</html> 

Last .js (Kindersandkasten)

signin.js

Ext.namespace('App.Signin'); 

App.Signin = Ext.extend(Ext.form.FormPanel, { 
    initComponent: function() { 
     var formPanelConfig = { 
     items: [{ 
      ... 
     }] 
     }; 

     Ext.apply(this, Ext.apply(this.initialConfig, formPanelConfig)); 
     App.Signin.superclass.initComponent.apply(this, arguments); 
    } 
}); 

Ich habe andere Sache versucht, auf "The Line" oben erwähnt, wie einfach die URL einfügen, bekommen den Inhalt von Ajax und vorbei den Inhalt, vorbei an der eval() -ed Inhalte zu übergeordneten Sandbox. und egal was, ich habe Ergebnis des Ausdrucks 'App.Signin' [undefined] ist kein Konstruktor. Und gut, es ist auch nicht im DOM-Element in Air Introspector verfügbar.

Ich erinnere mich irgendwo lesen über das Laden von JavaScript vor OnLoad Ereignis, aber ich konnte nicht erinnern, wo genau, und wichtiger, ich weiß nicht, wie es zu implementieren. Ist meine Annäherung nicht vor onLoad?

Oder könnten Sie mir bitte die Anleitung zeigen, um dieses Problem zu lösen.

Antwort

0

kann das Beispiel „Simple Tasks“ sein (AIR) u kann helfen

+0

Nun habe ich die ganze Ausgangsstruktur gebaut, ich meine Eltern-Kind-Sandbox Initialisierung von einfachen Aufgaben zu studieren. Aber die Sache ist, alles in dieser App sind lokal und in der Air Sandbox. Ich muss zusätzliche Klasse von Remote-Sandbox * in die Air Sandbox laden. – Khosrow

Verwandte Themen