我目前正在構建一個HTML/JS AIR應用程序。應用程序需要向用戶顯示不同的「窗口」 - 取決於這是他們第一次啓動應用程序。這部分實際上是很好,我有下面的代碼來做到這一點:在HTML AIR應用程序中訪問NativeWindow的內容?
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)
}
不過,我希望能夠做的是從cover.html
內操縱 HTML內容已經裝載了之後。網上有很多關於如何移動,調整大小等的教程,但我只想訪問NativeWindow
的HTML內容。
例如,我將如何添加一個新的段落到該頁面?我已經試過如下:
newHtmlLoader.window.opener = window;
var doc = newHtmlLoader.window.opener.document.documentElement;
使用AIR的內部檢查的控制檯,... .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
的內部內容編程?任何幫助將不勝感激。
感謝您的反饋雅各布。我嘗試了你所說的,但不幸的是還是一無所獲。 我在5秒鐘之後使用setTimeout()調用函數來試圖插入段落,但那也不起作用,所以它似乎不是未加載文檔的問題。 – 2010-04-27 15:54:39