2010-02-22 2 views
3

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

ответ

3

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

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

Таким образом, вы могли бы спасти команду JQuerify как:

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

... или независимо от АФИ для запуска Видеосервис YouTube в их HTML-страницы, если это вообще возможно.

Надежда, что помогает, Lance

+1

Я хорошо знаком с firebug и даже инъекцией js на страницах. На самом деле я вроде как ищу инъекцию js, которая, в свою очередь, вводит нажатия клавиш в вспышку. В любом случае, бит allowScriptAccess, о котором я не знал. Считаете ли вы его возможным достичь этого другими способами, например. FF-аддон? –

+0

Я уверен, что вы можете сделать это с помощью аддона Firefox, но я ничего не знаю о деталях. Вводя нажатия клавиш, это было бы круто, я посмотрю, возможно ли это прямо сейчас! Кроме этого, я не вижу, как вы могли бы узнать, что щелкнуть внутри swf youtube. –

+0

Ya было бы очень круто. Я не ищу алгоритм Бога, который будет определять все, как, например, кнопки и прочее. Мое реальное требование - иметь возможность посылать нажатия клавиш и события мыши в флеш-фильм, все остальное, что я могу прекрасно обрабатывать. –

0

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

1

Я попытался создать (WebKit) DOM событие и отправить его на ОБЪЕКТ элемент флэш. Я также пробовал все дочерние узлы этого элемента.

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, например.

Смежные вопросы