Отправить события клавиатуры и мыши во Flash Movie - PullRequest
3 голосов
/ 23 февраля 2010

Я ищу способ «вставить» некоторые события во флэш-фильм, запущенный в браузере. Я знаю о функции ActionScript ExternalInterface.addCallback, однако я пытаюсь добиться этого с любой «случайной» вспышкой из Интернета. Например. отправьте событие клавиатуры «SPACE» на видео на YouTube.

Ответы [ 3 ]

3 голосов
/ 23 февраля 2010

Вы не можете сделать это с любым произвольным SWF на любом сайте из-за ограничений безопасности. Вам необходимо иметь доступ к DOM, что может быть сделано только с помощью Javascript Injection , если только вы не являетесь пользователем со встроенным в сайт swf с allowScriptAccess="always" в html-шаблоне. MySpace, например, позволяет вам добавлять любой случайный swf на html-страницу, но вы не можете делать такие вещи javascript, потому что они заставляют allowScriptAccess всегда быть false (среди прочего), чтобы предотвратить любой доступ javascript / dom .

Если вы хотите облегчить себе жизнь во время просмотра, вы можете использовать Firebug для Firefox . Посмотрите этот JQuerify Bookmarklet и видео, Взлом Digg с помощью Firebug и JQuery . Он показывает вам, как динамически изменять веб-страницу с использованием javascript и сохранять эти команды как ярлыки! Супер круто.

Таким образом, вы можете сохранить команду JQuerify, например:

$("#youtube_player").play();

... или любой другой API-интерфейс для запуска видео на YouTube на их html-странице, если это вообще возможно.

Надеюсь, это поможет, Lance

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

Я попытался создать событие (WebKit) DOM и отправить его в элемент Flash OBJECT. Я также попробовал все дочерние узлы этого элемента, чтобы быть уверенным.

function fireEvent(target) {
   var evt = document.createEvent("Events");
   evt.initEvent("keypress", true, true);
   evt.view = window;
   evt.altKey = false;
   evt.ctrlKey = false;
   evt.shiftKey = false;
   evt.metaKey = false;
   evt.keyCode = 32;
   evt.charCode = ' ';
   target.dispatchEvent(evt);
}

Это не сработало. Мой ответ: нет. Вы не можете сделать это, по крайней мере, из Javascript.

Если вы действительно хотите это сделать, думаю, вам придется создать приложение со встроенным элементом управления браузером (WebKit, Gecko и т. Д.). Затем вы можете напрямую вызвать API плагина для синтеза событий пользовательского ввода. Вот как Boxee работает, например.

0 голосов
/ 23 февраля 2010

Если Flash не настроен на прослушивание событий, которые вы пытаетесь отправить, я думаю, что то, что вы хотите сделать, невозможно. Но, как вам обязательно скажет моя жена, я сильно ошибаюсь.

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