Adobe Airは初めてのことですが、質問は明らかかもしれませんが、苦労して苦労する日はありませんでした。ExtJS内蔵のアプリケーションをAir Sandboxに読み込む方法
私は、必要なコードが埋め込まれたWebアプリケーションを構築しようとしています。起動プロセスを構築し、デプロイされたWebアプリケーションから実行時に必要なリソースを取り出し、メインアプリケーションに注入します。 2つの異なるサンドボックス(主な航空アプリの場合は親サンドボックス、配備されたアプリの場合は子サンドボックスとしてのiframe)を構築しました。ここで私がやったものだ:
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(親サンドボックス)(子サンドボックス上のJSP)
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';
}
};
}();
負荷
<html>
<head>
<script type="text/javascript" src="http://localhost:8080/webapp/scripts/app/load.js"></script>
</head>
<body onload="Load.init();"></body>
</html>
負荷.js(子サンドボックス)
私は、このような(、単にURLを挿入することにより、AJAXコンテンツを取得し、コンテンツを渡し、evalのを渡して、前述した「ライン」でさまざまなことを試してみた0signin.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);
}
});
)親のサンドボックスにコンテンツを追加します。どのようなものであっても、私はの式の結果 'App.Signin' [未定義]はコンストラクタではありません。そして、それはAir IntrospectorのDOM要素でも利用できません。
私はonLoadイベントの前にjavascriptを読み込むことについてどこか読んでいますが、どこで正確に、さらに重要なのかを思い出すことができませんでした。 onLoadの前に私のアプローチはありませんか?
この問題を解決するためのガイドを教えてください。
uのを助けることができる、私は単純なタスクを研究から、親と子のサンドボックスを初期化する意味します。しかし、問題は、そのアプリのすべてがローカルであり、* Air Sandboxにあることです。リモートサンドボックス*から*エアサンドボックスに余分なクラスをロードする必要があります。 – Khosrow