Есть ли способ для приложения Flex получить любую информацию о документе HTML через ExternalInterface?
Извлечь JSInterface - API JavaScript для ActionScript 3 ,Два примера на первой странице называются:
В настоящее время я использую эту библиотеку, и она очень мощная.Я спросил его ( Олег Галабурда ) один раз, стоит ли мне использовать это для простой возможности изменения размера swf.Он сказал что-то вроде «если вам нужно всего лишь сделать несколько шагов в javascript, просто придерживайтесь ExternalInterface. Если вам нужен доступ к DOM в ActionScript, используйте это».
В * 1023 есть сотни примеров* svn репозиторий .Он проделал потрясающую работу с этой штукой.Он преобразует объекты JavaScript в ActionScript и обратно, поэтому вы можете использовать полноценные классы.Потребовалось бы много работы, чтобы восстановить его, так что это кросс-браузер и все.Он сделал это!
Все в JSInterface в основном динамический класс, так что вы можете легко развернуть DOM.Вот несколько примеров методов (в ActionScript):
protected function testCSS():void
{
var styleTag:JSHTMLElement = JSInterface.pushCSS('.text{font-weight:bold;color:#ff00ff;font-size:90;text-decoration:underline;}');
var font:JSHTMLElement = JSInterface.document.createElement('font');
font.innerHTML = 'Hello world!';
font.setAttribute('class', 'text');
font.className = 'text';
JSInterface.document.body.appendChild(font);
trace(styleTag);
}
protected function insertIFrame():void
{
var body:JSDynamic = JSInterface.document.getElementsByTagName('body')[0];
var frame:JSDynamic = JSInterface.document.createElement("iframe");
frame.width = 300;
frame.height = 300;
if (JSInterface.navigator.appName.indexOf('Microsoft')>=0)
{
frame.onreadystatechange = function():void
{
trace(frame.readyState);
};
}
else
{
frame.onload = function():void
{
trace('iFrame loaded');
};
}
frame.src = 'http://actualwave.com';
body.appendChild(frame);
}
Библиотека внутренне использует ExternalInterface для обработки всего.Но чтобы сериализовать / десериализовать DOM в / из ActionScript, это тонна работы.Эта библиотека должна сделать свое дело.
Надеюсь, это поможет, Лэнс