Получить положение приложения Flex на веб-странице?
-
01-07-2019 - |
Вопрос
Можно ли получить координаты x,y приложения Flex на HTML-странице?Я знаю, что вы можете использовать ExternalInterface.ObjecID для получения «атрибута id тега объекта в Internet Explorer или атрибута имени тега внедрения в Netscape», но я не могу пройти этот шаг.Кажется, что должна быть возможность получить дескриптор этого объекта внедрения.Какие-либо предложения?
Спасибо.
Решение
Я думаю, что проще всего включить в 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 в моем примере представляет собой анонимную функцию, поэтому идентификатор тега внедрения/объекта можно передать в нее в качестве параметра для ExternalInterface.call
, но вы можете просто использовать конкатенацию строк, если хотите:
var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";
var offset : Object = ExternalInterface.call(jsCode);
Это тоже сработает, просто я думаю, что первая версия более элегантна.
Другие советы
Если вы пытаетесь просто измерить, где оно находится на странице в качестве внешнего пользователя, единственное, что мне приходит в голову, — это расширение Firefox под названием MeasureIt. Я время от времени использовал его для различных измерений на веб-страницах.
Пытаетесь ли вы сделать это программно изнутри самой встроенной страницы, и если да, то на каком языке?