Использование shadowbox отключает сочетания клавиш?

StackOverflow https://stackoverflow.com/questions/50115

Вопрос

Итак, мой сайт использует теневой ящик для этого нужно отобразить какой-нибудь динамический текст.Проблема в том, что мне нужно, чтобы пользователь мог копировать и вставлять этот текст.

Щелчок правой кнопкой мыши и выбор пункта копировать работает, но Ctrl+C не работает (никакие сочетания клавиш не работают), и большинство людей используют Ctrl+C?Вы можете увидеть пример того, о чем я говорю здесь.

Просто перейдите в раздел "веб-примеры" и нажмите "встроенный".Обратите внимание, что сочетания клавиш действительно работают в примере "эта страница".Единственное различие между этими двумя, которое я вижу, - это js-файлы плеера, которые они используют."Встроенный" использует проигрыватель html.js, а "эта страница" использует iframe.js.Кроме того, я полагаю, что он использует библиотеку mootools.Есть какие-нибудь идеи?

Это было полезно?

Решение

Лучший вариант - отключить сочетания клавиш для навигации в shadowbox, установив для параметра "enableKeys" значение false (см. эта страница).

В качестве альтернативы вы могли бы сделать что Робби предполагает и изменения shadowbox.js файл, но делайте это только в том случае, если вам нужна навигация с клавиатуры shadowbox.Я думаю, что вы хотите выполнить поиск этого блока кода и изменить его так, чтобы он отменял событие по умолчанию только в том случае, если используется один из ярлыков (я добавил несколько разрывов строк и отступов):

var handleKey=function(e){
    var code=SL.keyCode(e);
    SL.preventDefault(e);
    if(code==81||code==88||code==27){
        SB.close()
    }else{
        if(code==37){
            SB.previous()
        }else{
            if(code==39){
                SB.next()
            }else{
                if(code==32){
                    SB[(typeof slide_timer=="number"?"pause":"play")]()
                }
            }
        }
    }
};

Я думаю, вы могли бы изменить это, чтобы оно выглядело более похоже на это:

var handleKey=function(e){
    switch(SL.keyCode(e)) {
        case 81:
        case 88:
        case 27:
            SB.close()
            SL.preventDefault(e);
            break;

        case 37:
            SB.previous()
            SL.preventDefault(e);
            break;

        case 39:
            SB.next()
            SL.preventDefault(e);
            break;

        case 32:
            SB[(typeof slide_timer=="number"?"pause":"play")]()
            SL.preventDefault(e);
            break;
    }
};

Это должно помешать обработчику событий shadowbox проглатывать любые нажатия клавиш, о которых ему нет дела.

Другие советы

Эта проблема вызвана некоторым JavaScript, который поглощает события клавиатуры.Например, вы можете нажать клавишу escape, которая попадает в ловушку одного из файлов .js и приводит к закрытию теневого окна.

Ваш выбор - взломать файлы и найти проблему или не использовать shadowbox.Удачи вам!

Решение состоит в том, чтобы установить для параметра enableKeys значение false.Однако, похоже, это не работает при вызове open() для встроенного HTML.Однако это работает, если вы установите его в своем вызове init().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top