現在、HTML/JS AIR アプリケーションを作成しています。アプリケーションは、ユーザーがアプリケーションを初めて起動したかどうかに応じて、異なる「ウィンドウ」をユーザーに表示する必要があります。この部分は実際には問題なく、それを行うための以下のコードがあります。
if(!startUp()) { // this simply returns a boolean from a local preferences database that gets shipped with the .air
// do first time stuff
var windowOptions = new air.NativeWindowInitOptions();
windowOptions.systemChrome = 'none';
windowOptions.type = 'lightweight';
windowOptions.transparent = 'true';
windowOptions.resizable = 'false';
var windowBounds = new air.Rectangle(300, 300, 596, 490);
var newHtmlLoader = air.HTMLLoader.createRootWindow(true, windowOptions, true, windowBounds);
newHtmlLoader.load(new air.URLRequest('cover.html'));
}
else {
// display default window
// just set nativeWindow.visible = true (loaded from application.xml)
}
しかし、私ができるようにしたいのは、html コンテンツがロードされた後に内部から操作することです。cover.html
の移動、サイズ変更などのチュートリアルがオンラインでたくさんあるようですが、単にの HTML コンテンツNativeWindow
にアクセスしたいだけです。NativeWindow
たとえば、そのページに新しい段落を追加するにはどうすればよいでしょうか? 私は次のことを試しました:
newHtmlLoader.window.opener = window;
var doc = newHtmlLoader.window.opener.document.documentElement;
AIR の Introspector コンソールを使用すると、 ....log(doc)
が返されます[object HTMLHtmlElement]
。
うーん、有望ですね。次に試してみます:
var p = document.createElement('p');
var t = document.createTextNode('Insert Me');
p.appendChild(t);
doc.appendChild(p);
...しかし、何も挿入されません。の次の代替品も試しましたdoc
:
var doc = newHtmlLoader.window.opener.document.body; // .log(doc) -> [object HTMLBodyElement]
var doc = newHtmlLoader.window.opener.document; // .log(doc) -> Error: HIERARCHY_REQUEST_ERR: DOM Exception 3
...さらに、jQuery を使用した場合:
$(doc).append('<p>Insert Me</p>'); // again, nothing
NativeWindow
では、の内部コンテンツにプログラムでアクセスした経験のある人はいますか? どんな助けでも大歓迎です。