Взаимодействие между Javascript и Flash / ActionScript без ExternalInterface? - PullRequest
2 голосов
/ 15 декабря 2010

Можно ли нажимать / получать значения / действия ActionScript, используя Javascript без ExternalInterface?

Как работает GreaseMonkey?Могу ли я сделать это с помощью GreaseMonkey?

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

как насчет

swf=document.embeds[0];//or 1 or 2 etc
swfvar1=swf.GetVariable("swfvariable");
swfvar2="something";
swf.SetVariable("swfvariable",swfvar2);

его GetVariable ( "swfvar"); с именем переменной в виде строки а также SetVariable ( "swfvar", jsval); с именем swfvar в виде строки и значением js, что вы хотите

для выполнения функции есть 2 способа 1. используя приведенный выше код с var swf, swf.SwfFunc (PARAMS); просто, правда? да.

2. снова с кодом выше swf.GetVariable ( "SwfFunc (PARAMS)"); так как он получает значение функции, он выполняет все это для поиска возвращаемого значения, что может быть плохо, если параметры уродливы с перекрывающимися кавычками, потому что в вызове уже есть кавычки

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

swf.GetVariable("
function(){
//whatever
}");

Я считаю это очень полезным, но помните, что вы должны избегать кавычек в этой функции на самом деле это все равно что вводить оператор eval, но лучше

1 голос
/ 15 декабря 2010

это довольно сложно, но, возможно, возможно реализовать прямое соединение LocalConnection или NetStream (для использования метода send()) в javascript :)Другой способ - использовать что-то в качестве буфера, который будет проверяться SWF и javascript каждый раз.Простой скрипт php будет хорошим буфером, также возможно эти данные могут быть сохранены в адресной строке браузера после #и еще одна забавная идея: вы можете разработать мессенджер SWF, который будет загружаться каждый раз, когда вам нужно будет передать сообщение на флэш-память.сообщение передается в мессенджер как переменные get, и оно создает LocalConnection с основным swf и передает туда данные.но единственный способ вызвать JS из Flash - это navigateToURL или, может быть, sendToURL

...