Flex ActionScript 関連覚書などなど

navigateToURLを使って新しいウインドウを開く場合には、
ブラウザのポップアップブロックに引っかかるときがある。

navigateToURLでは無く、JavaScriptを使ってウインドウを開いてやれば良いらしい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< ?xml version="1.0" encoding="utf-8"?>
< mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
  <mx :Script>
    < ![CDATA[
      import flash.net.navigateToURL;
 
      private function openNewWindow( event:MouseEvent, url:String, winName:String, w:int, h:int, toolbar:int, location:int, directories:int, status:int, menubar:int, scrollbars:int, resizable:int):void{
        var fullURL:String = "javascript:var myWin;" + "if(!myWin || myWin.closed)" + "{myWin = window.open('" + url + "','" + winName + "','" + "width=" + w + ",height=" + h  + ",toolbar=" + toolbar + ",location=" + location + ",directories=" + directories + ",status=" + status + ",menubar=" + menubar + ",scrollbars=" + scrollbars + ",resizable=" + resizable + ",top='+((screen.height/2)-(" + h/2 + "))+'" + ",left='+((screen.width/2)-(" + w/2 + "))+'" + "')}" + "else{myWin.focus();};void(0);";
        var u:URLRequest = new URLRequest(fullURL);
        navigateToURL(u,"_self");
      }
    ]]>
  </mx>
  <mx :Button label="JavascriptFunction" click="openNewWindow(event, 'http://www.adobe.com/', 'adobe', 800, 600, 1, 1, 1, 1, 1, 1, 1);"/>
  <mx :Button label="navigateURL" click="{navigateToURL(new URLRequest('http://www.adobe.com/'));}" />
< /mx>

メニューバーやツールバーの有無は0,1のフラグで渡す。
FireFoxとOperaとIEでは確かめてみたけど、確かにウインドウが開いた。
設定によると思うけど、FireFoxでは新しいタブとして開いた。

こういう場合を考えると、やっぱりwidthとheightは設定するべきじゃないなぁ。
ブラウザ全体のサイズが調整されてしまう。

[情報元]Adobe Flex cookbook beta

コメント

コメントする