Мне просто любопытно, если возможно, что объекты Flash могут получить доступ к DOM документа, который встроил его.
Да .
Пример: http://livedocs.adobe.com/flex/3/html/help.html?content=ProgrammingHTMLAndJavaScript_07.html
Да, через класс 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
первый аргумент - это внешнее имя функции, а второй аргумент - это закрытие, которое будет вызвано.
Не знаю, но они могут выполнять javascript в содержащем документе, который, очевидно, затем может получить доступ к самой DOM.