2010-06-15 7 views
2

У меня есть компонент в AIR следующим образом:Не работает window.open внутри компонента AIR html?

<mx:HTML 
     id="html" 
     width="100%" 
     height="100%" 
     location="https://example.com" 
     locationChange="dispatchLocationChange(event)" 
    /> 

страница загружает содержит следующее:

<a onclick="alert('onclick')">Alert</a> 
<a href="javascript:alert('js')">Alert</a> 
<a onclick="window.open('http://www.google.com','_blank')">new window</a> 

2 оповещение и работу. однако ничего не происходит, когда вы нажимаете ссылку на новое окно.

все 3 ссылки работают, когда находятся в реальном браузере, поэтому я знаю его в порядке.

Есть ли только поддержка window.open в компоненте AIR HTML? или это ошибка?

Есть ли работа вокруг?

ответ

2

я узнал, что вам нужно расширить класс HTMLHost и переопределить createWindow метод, как это:

override public function createWindow(windowCreateOptions:HTMLWindowCreateOptions):HTMLLoader 
{ 
    var window:Window = new Window(); 
    window.open(); 
    window.visible = true; 


    window.height = windowCreateOptions.height; 
    window.width = windowCreateOptions.width; 


    var htmlLoader:FlexHTMLLoader = new FlexHTMLLoader(); 
    htmlLoader.width = window.width; 
    htmlLoader.height = window.height; 
    htmlLoader.htmlHost = new MyHTMLHost(); 

    window.stage.addChild(htmlLoader); 

    return htmlLoader; 
} 

Затем установите этот подкласс как свойство HTMLHost для HTML компонента ,

Это заставляет его работать. Но в новом всплывающем окне есть странное поведение. Кажется, что это багги.

1

Попытка: navigateInSystemBrowser.

Example:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> 
<mx:Script> 
     <![CDATA[ 
      private function init():void 
      { 
        html.htmlLoader.navigateInSystemBrowser = true; 
      } 
     ]]> 
</mx:Script> 
     <mx:HTML location="test.html" id="html" creationComplete="init()"/> 
</mx:WindowedApplication> 
Смежные вопросы