window.open在AIR html组件中不起作用吗?

时间:2010-06-15 17:59:39

标签: flex flash air

我在AIR中有一个组件,如下所示:

<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个链接在真实浏览器中都有效,所以我知道它没问题。

AIR HTML组件中是否不支持window.open?或者这是一个错误?

有解决方法吗?

2 个答案:

答案 0 :(得分: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;
}

然后将此子类设置为HTML组件的htmlHost属性。

这确实让它发挥作用。但是在新的弹出窗口中有一些奇怪的行为。看起来有点儿。

答案 1 :(得分: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>