使用JS将焦点设置为swf

时间:2009-02-14 09:22:44

标签: javascript flash focus

如何使用Javascript将焦点设置在页面中嵌入的SWF中?我尝试使用通常的方法,但它似乎没有工作......

1 个答案:

答案 0 :(得分:4)

遗憾的是,Firefox中的焦点管理和Flash存在已知问题。

Here's an article解释了一种可能对你有用的方法;结果是你可以使用JavaScript和flash.external.ExternalInterface来通知Flash文件键盘活动,直到Flash控件正常获得焦点。我之前已经实现了这样的方法,它运行得很好;例如,我自己的解决方案在包含HTML页面中看起来像这样:

<script language="javascript">

    if (navigator.appName.indexOf("Microsoft") != -1)
    {
        document.attachEvent("onkeydown", ieKeyHandler);
        window.attachEvent("onkeydown", ieKeyHandler);

        function ieKeyHandler(event)
        {       
            sendToFlash(event.keyCode);
        }       
    }
    else
    {
        document.onkeydown = function(e)
        {       
            sendToFlash(e.keyCode);
        }
    }

    function sendToFlash(s)
    {       
        var flashCtl = thisMovie("yourFlashObjectID");
        flashCtl.callIntoFlashFromJavascript(s);            
    }

    function thisMovie(movieName)
    {
        if (navigator.appName.indexOf("Microsoft") != -1)           
        {
            return window[movieName];
        }
        else
        {
            return document[movieName];
        }
    }

</script>

...然后在Flash文件中,您可以简单地为名为callIntoFlashFromJavascript的函数定义ExternalInterface回调处理程序,并将字符串参数传递给文本控件。诚然,这有点笨拙,但它确实有效。

有关使用ExternalInterface和JavaScript的端到端示例,请参阅my answer to this question as well。希望它有所帮助!