Настройка фокуса на SWF с помощью JS - PullRequest
4 голосов
/ 14 февраля 2009

Как установить фокус на SWF-файл, встроенный в страницу с помощью Javascript? Я пытался использовать обычный метод, но, похоже, он не работает ...

1 Ответ

4 голосов
/ 14 февраля 2009

К сожалению, в Firefox есть известные проблемы с управлением фокусом и Flash.

Вот статья , которая объясняет один подход, который может работать на вас; В результате вы можете использовать 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 можно просто определить обработчик обратного вызова ExternalInterface для функции callIntoFlashFromJavascript и передать строковый аргумент в свой текстовый элемент управления. Это немного тяжеловато, правда, но это работает.

См. Также мой ответ на этот вопрос , где приведен полный пример использования ExternalInterface с JavaScript. Надеюсь, это поможет!

...