Использование shadowbox отключает сочетания клавиш? - PullRequest
2 голосов
/ 08 сентября 2008

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

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

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

Ответы [ 3 ]

2 голосов
/ 12 сентября 2008

Наилучшим вариантом является отключение сочетаний клавиш в теневой коробке, установив для параметра «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 глотал любые нажатия клавиш, о которых он не заботится.

1 голос
/ 12 сентября 2008

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

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

0 голосов
/ 24 сентября 2009

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

...