代码之家  ›  专栏  ›  技术社区  ›  Alexandre Gomes

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

  •  3
  • Alexandre Gomes  · 技术社区  · 16 年前

    我正在寻找一种方法,将一些事件“注入”到运行在浏览器上的Flash电影中。我知道actionscript的externalInterface.addCallback函数,但是我正试图通过任何来自Web的“随机”闪存来实现这一点。向YouTube视频发送“空格”键盘事件。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Lance Pollard    16 年前

    由于安全限制,您不能对任何网站上的任意SWF执行此操作。您需要访问DOM,这只能由 Javascript Injections ,除非您是嵌入了SWF的站点, allowScriptAccess="always" 在HTML模板中。例如,MySpace允许你向HTML页面添加任意的SWF,但是你不能做那些JavaScript的工作,因为它们强制 allowScriptAccess 永远 false (除其他外)防止任何javascript/dom访问。

    如果这只是为了让你自己的生活更容易浏览,你可以使用 Firebug for Firefox . 看看这个jquerify书签和视频, Hacking Digg with Firebug and JQuery . 它向您展示了如何使用javascript动态修改您的网页,并将这些命令保存为快捷方式!超级酷。

    因此,可以保存jquerify命令,如:

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

    …或者不管API是什么,在他们的HTML页面上启动YouTube视频,如果可能的话。

    希望能有所帮助, 兰斯

        2
  •  1
  •   J. Perkins    15 年前

    我尝试创建(webkit)dom事件并将其发送到flash对象元素。我还尝试了该元素的所有子节点以确保这一点。

    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来合成用户输入事件。例如,Boxe就是这样工作的。

        3
  •  0
  •   brettkelly    16 年前

    除非flash被配置为监听你试图发送的事件,否则我猜你不可能想做什么。但是,正如我妻子肯定会告诉你的,我错了很多。

    推荐文章