我正在寻找一种方法将某些事件“注入”到浏览器上运行的flash影片中。我知道ActionScript的ExternalInterface.addCallback函数,但是我试图通过网络中的任何“随机”闪存实现这一点。例如。向youtube视频发送“SPACE”键盘事件。
答案 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配置为侦听您尝试发送的事件,否则我的猜测是您无法执行的操作。但是,正如我的妻子肯定会告诉你的那样,我错了很多。