将键盘和鼠标事件发送到Flash Movie

时间:2010-02-22 21:16:48

标签: javascript flex flash events actionscript

我正在寻找一种方法将某些事件“注入”到浏览器上运行的flash影片中。我知道ActionScript的ExternalInterface.addCallback函数,但是我试图通过网络中的任何“随机”闪存实现这一点。例如。向youtube视频发送“SPACE”键盘事件。

3 个答案:

答案 0 :(得分:3)

由于安全限制,您无法对任何网站上的任何随机swf执行此操作。您需要访问DOM,这只能由Javascript Injections完成,除非您是嵌入在网站中的swf的人,并且在html模板中有allowScriptAccess="always"。例如,MySpace允许你向html页面添加任何随机swf,但你不能做那个javascript的东西,因为它们强制allowScriptAccess始终是false(除其他外)以防止任何javascript / dom访问。

如果您只是为了让自己的生活更轻松,那么您可以使用Firebug for Firefox。查看此JQuerify Bookmarklet和视频,Hacking Digg with Firebug and JQuery。它向您展示了如何使用javascript动态修改您的网页,并将这些命令保存为快捷方式!超酷。

因此您可以保存JQuerify命令,如:

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

...或者用于在他们的html页面中启动youtube视频的api,如果可能的话。

希望有所帮助, 兰斯

答案 1 :(得分:1)

我尝试创建一个(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的工作方式。

答案 2 :(得分:0)

除非将Flash配置为侦听您尝试发送的事件,否则我的猜测是您无法执行的操作。但是,正如我的妻子肯定会告诉你的那样,我错了很多。