当前位置:  开发笔记 > 编程语言 > 正文

Flash窃取浏览器焦点

如何解决《Flash窃取浏览器焦点》经验,为你挑选了1个好方法。

我的页面中有一个Flash应用程序,当用户与Flash应用程序交互时,浏览器/ html/javascript停止接收键盘输入.

例如,在Firefox中,control-t不再打开新选项卡.

但是,如果我单击非闪存页面的一部分,浏览器将再次开始接收这些事件.

无论如何以编程方式(通过flash或javascript)将焦点返回到浏览器?

在用户点击flash中的按钮后,我让flash执行了一个javascript回调,所以我尝试通过javascript将焦点放在表单字段(和正文)上,但这种方法似乎不起作用.

一个更具体的例子是Youtube.他们也有这个问题.当我单击播放/暂停按钮或调整音量时,我希望我的浏览器键盘控制仍然有效,但他们没有,我必须单击电影区域外的页面上的某个位置.这是我正在努力解决的确切问题.



1> discorax..:

您可以使用Flash中的ExternalInterface类来调用JavaScript.例如,你可以在一个区间(例如Event.ENTER_FRAME)上设置一个函数来调用@Diodeus提到的JavaScript函数:

document.body.focus();

或者,更好的解决方案是将事件监听器添加到flash根(阶段)以监听鼠标离开Flash的时间.您可以设置此事件以将焦点移动到document.body.

AS3

package {
   import flash.display.*;
   import flash.events.*;
   import flash.external.ExternalInterface;

    public class TestMouseLeave extends Sprite
    {
        public function TestMouseLeave()
        {
            // Add event listener for when the mouse LEAVES FLASH
            addEventListener(MouseEvent.MOUSE_OUT, onMouseLeave);
        }

        private function onMouseLeave(ev:Event):void
        {
            var jslink = new ExternalInterface();
            jslink.call("changeFocus");
        }
    }

}

您网页上的Javascript:


如果您想要一个AS2示例,请告诉我,我会发布它.

想要记下这个解决方案:一旦你将焦点推回到浏览器,你将需要用户再次点击Flash插件来激活flash插件内的用户输入.这可能是一种刺耳的用户体验,在使用此解决方案时需要考虑.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有