Получить позицию Flex приложения на веб-странице? - PullRequest
0 голосов
/ 18 сентября 2008

Можно ли получить координаты x, y приложения Flex на странице HTML? Я знаю, что вы можете использовать ExternalInterface.ObjecID, чтобы получить «атрибут id тега объекта в Internet Explorer или атрибут name тега embed в Netscape», но я не могу пройти этот шаг. Кажется, должно быть возможно получить дескриптор этого встраиваемого объекта. Какие-либо предложения?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 18 сентября 2008

Я думаю, что самое простое, что нужно сделать, - это включить на страницу HTML какую-нибудь библиотеку JavaScript, скажем, jQuery, и использовать ее функции для определения положения и размера узлов 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.

Вы могли бы обойтись без jQuery, если бы посмотрели, как реализован метод offset, и включили этот код вместо вызова jQuery. Таким образом, вам не нужно загружать jQuery в HTML, и приложение Flex будет автономным. Причина, по которой я предлагаю использовать такую ​​библиотеку, как jQuery, заключается в том, что браузеры делают это по-разному. Я не уверен, что вычисление смещений сильно отличается от браузера к браузеру, но не мешает быть изолированным от различий браузера.

JavaScript в моем примере является анонимной функцией, так что идентификатор тега embed / object может быть передан ему в качестве параметра ExternalInterface.call, но вы можете просто использовать конкатенацию строк, если хотите:

var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";

var offset : Object = ExternalInterface.call(jsCode);

Это бы тоже сработало, я просто думаю, что первая версия более элегантна.

0 голосов
/ 18 сентября 2008

Если вы пытаетесь просто измерить, где он находится на странице как внешний пользователь, единственное, что приходит мне в голову, - это расширение Firefox под названием MeasureIt, которое я иногда использовал для различных измерений на веб-страницах.

Вы пытаетесь сделать это программно из самой встроенной страницы, и если да, то какой язык?

...