Может ли встроенный объект Flash получить доступ к DOM своего родительского документа? - PullRequest
5 голосов
/ 18 марта 2010

Мне просто любопытно, возможно ли, чтобы объекты Flash могли обращаться к DOM документа, который его встроил.

Ответы [ 3 ]

7 голосов
/ 18 марта 2010

Да, через класс ExternalInterface.

Вы можете звонить в Javascript из фильма Flash и получать любую публичную информацию о странице, которую пожелает ваше сердце.

Добавление

Глядя на это полтора года спустя, я решил добавить несколько примеров:

Скажем, у вас есть функция JS на вашей клиентской странице, например:

function foo(bar,type) {
  // do something with bar and type
}

Вы называете это из Flash (используя AS3) так:

ExternalInterface.call(foo, bar, type);

Обратите внимание, что имя функции является первым объектом, а аргументы перечислены последовательно после него.

Чтобы представить метод фильма Flash за пределами Javascript, вы должны сделать это во Flash или Flex (снова AS3):

application1_applicationCompleteHandler(event:Event) {
  // the app has finished loading, so do whatever we
  // have to do on load, plus add that callback
  ExternalInterface.addCallback(foo, bar);
}

public function bar(arg1, arg2) : void {
  // do something with arg1 and arg2
}

В Javascript на странице вы вызываете его следующим образом (где myMovie - это идентификатор SWF):

myMovie.foo(anArg, anotherArg);

В методе addCallback первый аргумент - это внешнее имя функции, а второй аргумент - это замыкание, которое будет вызвано.

4 голосов
/ 18 марта 2010
3 голосов
/ 18 марта 2010

Не знаю, но они могут выполнить javascript в содержащем документе, который, очевидно, может затем получить доступ к самому DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...