HTMLページ内でFlexアプリのx、y座標を取得することは可能ですか?ExternalInterface.ObjecIDを使用して「InternetExplorerのオブジェクトタグのid属性、またはNetscapeの埋め込みタグのname属性」を取得できることは知っていますが、その手順を通過できないようです。その埋め込みオブジェクトのハンドルを取得できるはずのようです。助言がありますか?
ありがとう。
HTMLページ内でFlexアプリのx、y座標を取得することは可能ですか?ExternalInterface.ObjecIDを使用して「InternetExplorerのオブジェクトタグのid属性、またはNetscapeの埋め込みタグのname属性」を取得できることは知っていますが、その手順を通過できないようです。その埋め込みオブジェクトのハンドルを取得できるはずのようです。助言がありますか?
ありがとう。
最も簡単な方法は、jQuery などの JavaScript ライブラリを HTML ページに組み込み、その関数を使用して DOM ノードの位置とサイズを決定することだと思います。私は多かれ少なかれ次のようにします:
var jsCode : String = "function( id ) { return $('#' + id).offset(); }";
var offset : Object = ExternalInterface.call(jsCode, ExternalObject.objectID);
trace(offset.left, offset.top);
これは ActionScript コードですが、JavaScript コードを を通じて実行することに注意してくださいExternalInterface
。jQuery と、特にoffset
DOM ノードの左と上のオフセットを返すそのメソッドを使用します。
offset
メソッドの実装方法を調べて、jQuery の呼び出しの代わりにそのコードを含めれば、jQuery がなくても大丈夫です。そうすれば、HTML に jQuery をロードする必要がなくなり、Flex アプリは自己完結型になります。jQuery のようなライブラリを使用することをお勧めする理由は、ブラウザによってこれらの処理が異なるためです。オフセットの計算がブラウザーごとに大きく異なるかどうかはわかりませんが、ブラウザーの違いから切り離されても害はありません。
私の例の JavaScript は無名関数であるため、embed/object タグの ID を へのパラメーターとして渡すことがExternalInterface.call
できますが、必要に応じて文字列連結を使用することもできます。
var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";
var offset : Object = ExternalInterface.call(jsCode);
それもうまくいくでしょう。最初のバージョンの方がエレガントだと思います。
外部ユーザーとしてページ内のどこにあるかを測定しようとしている場合、私の頭に浮かぶのは MeasureIt と呼ばれる Firefox 拡張機能だけです。Web ページのさまざまな測定に時折使用しています。
埋め込みページ自体からプログラムでこれを実行しようとしていますか? もしそうなら、どの言語ですか?