あっという間に、弊社の「旅する支社」制度、自分の滞在最終日になりました。

この「旅する支社」制度、参加する社員がいっせいにイタリアオフィスに移動するわけではなく、数人ごとのチーム編成を組んでローテーションで時期をずらしながら約一ヶ月間滞在しています。


さて、本題のObjectDumperについて。

本当は「ポップアップブロックをブロックして指定サイズでウィンドウを開く方法」を記事にまとめるつもりだったんですが、いろいろ調べていくうちに迷宮に入ってしまったので、今回は最近Flashで感動したObjectDumperについて(いまさら!)まだ知らない方へ向けての意味も込めて記事にしてみました。


さらば“ [object Object] ”

オブジェクトをtrace出力すると、[object object]と表示されるだけで、その中身を見ることができません。なので、今まではいちいちtrace(myObject.hoge); というように、ちまちまtraceしていました。今思えば、ひたすら無駄な時間でした。

しかし、まずオブジェクトに対してObjectDumperクラスのtoString()メソッドを用いると、オブジェクトの内容をすべて文字列で返してくれるので、返ってきた内容をtraceすれば、オブジェクトの中身を確認することができます。


import mx.data.binding.ObjectDumper; var _obj:Object = { a:"0", b:"1", c:"2" }; trace(_obj);// -> [object Object] trace(ObjectDumper.toString(_obj)); //trace出力結果-> {a: "0", b: "1", c: "2"}


import mx.data.binding.ObjectDumper; var hoge:String = "hogehoge"; var myNum:Number = 10; var _obj:Object = { a:"0", b:hoge, c:myNum }; _obj.gogo = function(){} trace(ObjectDumper.toString(_obj,true)); //trace出力結果 -> {a: "0", b: "hogehoge", c: 10, gogo: function}


このObjectDumperクラス、Flashのヘルプや巷に出回っているActionScriptのリファレンス本に載っていなかったこともあり、つい最近まで存在を知りませんでした。。社内のFlashDeveloper数人に聞いてみると、「え?知らなかったの?」と鼻で笑われる始末。


ObjectDumperクラスの概要、引数など、詳しくは野中さんのサイトにまとめられているのでぜひご覧になることをオススメします。

参考サイト

FN0510005 - ObjectDumper.toString()メソッド - Flash : テクニカルノート

最初にお話した「ポップアップブロックをブロックして指定サイズでウィンドウを開く方法」ですが、 検証環境はFireFox2、IE7、Safari(いずれもWindows版)でいろいろと試しています。


1) getURLで単純にURLとウィンドウのターゲット指定する方法
2) getURLでjavascriptのwindow.openを実行する方法
3) ExternalInterfaceでhtml側に記述したjavascript関数を実行する方法
4) ブラウザの種類・バージョンや環境で分岐させて2)、3)のいずれかを実行する方法

1)の方法では、ブラウザによってはポップアップブロックにひっかかってしまう上にサイズ指定でウィンドウを開けないのでNG。

自分のPC環境(win Vista, FireFox,IE7,Safari)では、2)の方法で問題なくオープンできていますが、どうやらブラウザとPCの環境によってはうまくいかないケースもあるようです。

引き続き調査していきますので、なにか分かったらここで報告したいと思います。

参考サイト

プログラマ気分 | 【AS1.0/2.0】Flash から新規ウィンドウを開く際にポップアップブロックを防ぐ
第35回 FlashムービーとJavaScriptを連携させてみよう:ITpro
IE、FirefoxでFlashから新規ウィンドウを開く際にポップアップブロックされる件の回避 - 0x集積蔵

HTML5飯