Как поймать keydown в iframe после открытия - PullRequest
0 голосов
/ 17 марта 2012

Fancybox показывает pikachoose просмотра изображений в iframe Клавиши клавиатуры используются для навигации между изображениями При начальной загрузке ключи игнорируются. Ключи будут работать только при нажатии в fancybox. Я добавил

              $('.pikachoose').focus();

но это не включает ключи. Как разрешить работу клавиш сразу, если открыт iframe?

содержание iframe:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <html>
<head>
    <link type="text/css" href="Pikachoose/bottom.css" rel="stylesheet" />
    <script type="text/javascript" src="jquery.min.js"></script>
    <script src="Pikachoose/jquery.pikachoose.full.js"></script>

    <script type="text/javascript">
            $(document).ready(function () {
                $("#pikame").PikaChoose({
                    autoPlay: false
                });

                $("html").keydown(function (evt) {
                    $('#pikame').data('pikachoose').Next();
                });
              // why this does not allow keydown event:
              $('.pikachoose').focus();
            });
    </script>
</head>
<body>
    <div class="pikachoose">
        <ul id="pikame">
            <li>
                <img src="img1" />
            </li>
            <li>
                <img src="img2" />
            </li>
            <li>
                <img src="img3" />
            </li>
        </ul>
    </div>
</body>
</html>

1 Ответ

1 голос
/ 17 марта 2012

Ваш селектор jQuery для идентификатора, а не для класса.

Либо измените свой JavaScript на $(".pikachoose").focus(), либо измените class="pikachoose" на id="pikachoose".

редактирование:

Обычно вы не можете фокусировать произвольные элементы, такие как div. Но есть псевдо-хак, который может сработать: поместить tabindex в элемент. Вы можете использовать -1, чтобы предотвратить нежелательное вмешательство в табуляцию. Так что либо поместите tabindex="-1" в этот div, либо вы можете указать $(".pikachoose").attr("tabindex", -1).focus() в своем коде.

...