HTML içeriği için tarayıcı benzeri kullanıcı arabirimleri tanımlamaAdobe AIR 1.0 ve üstü JavaScript, HTML içeriğini görüntüleyen pencerenin denetlenmesi için birkaç çeşitli API'ler sağlar. AIR'de, bu API'ler özel bir HTMLHost sınıfı uygulayarak geçersiz kılınabilir. HTMLHost sınıfının genişletilmesi hakkındaÖrneğin, uygulamanız sekmeli arabirimde birden çok HTMLLoader nesnesi sunuyorsa, ana pencere başlığını değil, sekmenin etiketini değiştirmek için yüklenen HTML sayfaları tarafından başlık değişikliklerinin yapılmasını isteyebilirsiniz. Benzer şekilde kodunuz üst görüntüleme nesnesi kabındaki HTMLLoader nesnesini yeniden konumlandırarak, HTMLLoader nesnesini içeren pencereyi taşıyarak, hiçbir şey yapmayarak veya tamamen farklı bir şey yaparak bir window.moveTo() çağrısına yanıt verebilir. AIR HTMLHost sınıfı, aşağıdaki JavaScript özellikleri ve yöntemlerini denetler:
new HTMLLoader() kullanarak bir HTMLLoader nesnesi oluşturduğunuzda, listelenen JavaScript özellikleri ve yöntemleri etkinleştirilmez. HTMLHost sınıfı, bu JavaScript API'lerinin varsayılan, tarayıcı benzeri bir uygulamasını sağlar. Davranışı özelleştirmek için ayrıca HTMLHost sınıfını genişletebilirsiniz. Varsayılan davranışı destekleyen bir HTMLHost nesnesi oluşturmak için HTMLHost yapıcısındaki defaultBehaviors parametresini true olarak ayarlayın: var defaultHost:HTMLHost = new HTMLHost(true); AIR'de HTMLLoader sınıfının createRootWindow() yöntemiyle bir HTML penceresi oluşturduğunuzda, varsayılan davranışları destekleyen bir HTMLHost örneği otomatik olarak atanır. HTMLLoader nesnesinin htmlHost özelliğine farklı bir HTMLHost uygulaması atayarak ana bilgisayar nesne davranışını değiştirebilir veya özellikleri tamamen devre dışı bırakmak için null değerini atayabilirsiniz. Not: AIR, HTML tabanlı bir AIR uygulaması için oluşturulan ilk pencereye ve JavaScript window.open() yönteminin varsayılan uygulamasıyla oluşturulan tüm pencerelere varsayılan bir HTMLHost nesnesi atar.
Örnek: HTMLHost sınıfını genişletmeAşağıdaki örnek, HTMLHost sınıfının genişletilmesi yoluyla HTMLLoader nesnesinin kullanıcı arabirimini etkileme biçiminin nasıl özelleştirildiğini gösterir: Flex örneği:
Burada açıklanan kodu test etmek için, aşağıdaki içeriğe sahip bir HTML dosyasını uygulama dizinine dahil edin: <html> <head> <title>Test</title> </head> <script> function openWindow() { window.runtime.trace("in"); document.title = "foo" window.open('Test.html'); window.runtime.trace("out"); } </script> <body> <a href="#" onclick="openWindow()">window.open('Test.html')</a> </body> </html> Flash Professional örneği:
Window.location özelliğindeki değişiklikleri işlemeHTML sayfasının URL'sindeki değişiklikleri işlemek için locationChange() yöntemini geçersiz kılın. Bir sayfadaki JavaScript window.location değerini değiştirdiğinde locationChange() yöntemi çağrılır. Aşağıdaki örnek istenen URL'yi yükler: override public function updateLocation(locationURL:String):void { htmlLoader.load(new URLRequest(locationURL)); } Not: Geçerli HTMLLoader nesnesine başvurmak için HTMLHost nesnesinin htmlLoader özelliğini kullanabilirsiniz.
window.moveBy(), window.moveTo(), window.resizeTo(), window.resizeBy() için JavaScript çağrılarını işlemeHTML içeriğinin sınırlarındaki değişiklikleri işlemek için set windowRect() yöntemini geçersiz kılın. Bir sayfadaki JavaScript window.moveBy(), window.moveTo(), window.resizeTo() veya window.resizeBy() çağırdığında, set windowRect() yöntemi çağrılır. Aşağıdaki örnek, masaüstü penceresinin sınırlarını günceller: override public function set windowRect(value:Rectangle):void { htmlLoader.stage.nativeWindow.bounds = value; } window.open() için JavaScript çağrılarını işlemewindow.open() için JavaScript çağrılarını işlemek üzere createWindow() yöntemini geçersiz kılın. createWindow() yöntemi uygulamaları, yeni bir HTMLLoader nesnesi oluşturmak ve döndürmekle sorumludur. HTMLLoader nesnesini genellikle yeni bir pencerede görüntülersiniz, ancak pencere oluşturma zorunlu değildir. Aşağıdaki örnek, window ve HTMLLoader nesnesi oluşturmak için HTMLLoader.createRootWindow() kullanan createWindow() işlevinin nasıl uygulanacağını gösterir. Buna ek olarak, bir NativeWindow nesnesini ayrıca oluşturabilir ve HTMLLoader nesnesini pencere sahnesine ekleyebilirsiniz. override public function createWindow(windowCreateOptions:HTMLWindowCreateOptions):HTMLLoader{ var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions(); var bounds:Rectangle = new Rectangle(windowCreateOptions.x, windowCreateOptions.y, windowCreateOptions.width, windowCreateOptions.height); var htmlControl:HTMLLoader = HTMLLoader.createRootWindow(true, initOptions, windowCreateOptions.scrollBarsVisible, bounds); htmlControl.htmlHost = new HTMLHostImplementation(); if(windowCreateOptions.fullscreen){ htmlControl.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; } return htmlControl; } Not: Bu örnek, window.open() ile oluşturulan tüm yeni pencerelere özel HTMLHost uygulamasını atar. Ayrıca farklı bir uygulama kullanabilir veya istediğinizde yeni pencereler için htmlHost özelliğini null değerine ayarlayabilirsiniz.
createWindow() yöntemine parametre olarak iletilen nesne bir HTMLWindowCreateOptions nesnesidir. HTMLWindowCreateOptions sınıfı, window.open() çağrısındaki features parametre dizesinde değerleri bildiren özellikleri içerir:
HTMLLoader sınıfı, özellik dizesinde belirtilebilecek tüm özellikleri uygulamaz. Uygulamanız gerektiğinde kaydırma çubukları, konum çubukları, menü çubukları, durum çubukları ve araç çubukları sağlamalıdır. JavaScript window.open() yöntemine ilişkin diğer argümanlar sistem tarafından işlenir. createWindow() uygulaması, HTMLLoader nesnesine içerik yükleyemez veya pencere başlığını ayarlayamaz. window.close() için JavaScript çağrılarını işlemeWindow.close() yöntemine JavaScript çağrılarını işlemek için windowClose() yöntemini geçersiz kılın. Aşağıdaki örnek, window.close() yöntemi çağrıldığında masaüstü penceresini kapatır: override public function windowClose():void { htmlLoader.stage.nativeWindow.close(); } window.close() için JavaScript çağrılarının varolan pencereyi kapatması gerekmez. Örneğin, aşağıdaki örnekte olduğu gibi pencereyi (başka bir içeriğe sahip olabilir) açık bırakarak görüntü listesinden HTMLLoader nesnesini kaldırabilirsiniz: override public function windowClose():void { htmlLoader.parent.removeChild(htmlLoader); } window.status özelliğindeki değişiklikleri işlemewindow.status değerindeki JavaScript değişikliklerini işlemek için updateStatus() yöntemini geçersiz kılın. Aşağıdaki örnek durum değerini izler: override public function updateStatus(status:String):void { trace(status); } İstenen durum dize olarak updateStatus() yöntemine iletilir. HTMLLoader nesnesi durum çubuğu sağlamaz. window.document.title özelliğindeki değişiklikleri işlemewindow.document.title değerindeki JavaScript değişikliklerini işlemek için updateTitle() yöntemini geçersiz kılın. Aşağıdaki örnek, pencere başlığını değiştirir ve başlığa "Örnek," dizesini ekler: override public function updateTitle(title:String):void { htmlLoader.stage.nativeWindow.title = title + " - Sample"; } HTML sayfasında document.title ayarlandığında, istenen başlık dize olarak updateTitle() yöntemine iletilir. document.title öğesindeki değişiklikler, HTMLLoader nesnesini içeren pencerenin başlığını değiştirmek zorunda değildir. Örneğin metin alanı gibi başka bir arabirim öğesini değiştirebilirsiniz. window.blur() ve window.focus() için JavaScript çağrılarını işlemeAşağıdaki örnekte gösterildiği gibi window.blur() ve window.focus() için JavaScript çağrılarını işlemek için windowBlur() ve windowFocus() yöntemlerini geçersiz kılın: override public function windowBlur():void { htmlLoader.alpha = 0.5; } override public function windowFocus():void { htmlLoader.alpha = 1.0; NativeApplication.nativeApplication.activate(htmlLoader.stage.nativeWindow); } Not: AIR, bir pencerenin veya bir uygulamanın devre dışı bırakılması için API sağlamaz.
HTML içeriğini kaydırarak pencereler oluşturmaHTMLLoader sınıfı, bir HTMLLoader nesnesi içeren ve bu pencere için bazı kullanıcı arabirimi ayarları tanımlayan yeni bir pencere (bir NativeWindow nesnesi tarafından temsil edilen) açmanızı sağlayan, HTMLLoader.createRootWindow() adında statik bir yöntem içerir. Bu yöntem, kullanıcı arabirimini tanımlamanızı sağlayan dört parametre içerir:
Örneğin aşağıdaki kod, dikey kaydırma çubukları kullanan HTMLLoader içeriğine sahip bir pencere oluşturmak için HTMLLoader.createRootWindow() yöntemini kullanır. var initOptions:NativeWindowInitOptions = new NativeWindowInitOptions(); var bounds:Rectangle = new Rectangle(10, 10, 600, 400); var html2:HTMLLoader = HTMLLoader.createRootWindow(true, initOptions, true, bounds); var urlReq2:URLRequest = new URLRequest("http://www.example.com"); html2.load(urlReq2); html2.stage.nativeWindow.activate(); Not: Doğrudan JavaScript içinde createRootWindow() çağrılarak oluşturulan pencereler açılan HTML penceresinden bağımsız kalır. Örneğin, JavaScript Window opener ve parent özellikleri null değerindedir. Ancak, createRootWindow() yöntemini dolaylı olarak createRootWindow() çağıran createWindow() yöntemini geçersiz kılarak çağırırsanız, opener ve parent açılan HTML penceresine başvurur.
|
|