Javascript 使用shadowbox会禁用键盘快捷键吗?

Javascript 使用shadowbox会禁用键盘快捷键吗?,javascript,keyboard-shortcuts,mootools,Javascript,Keyboard Shortcuts,Mootools,所以我的网站用来显示一些动态文本。问题是我需要用户能够复制和粘贴该文本 右键单击并选择“复制”可以工作,但Ctrl+C不能(没有键盘快捷键可以),大多数人使用Ctrl+C?你可以看到我所说的一个例子 只需转到“web”示例并单击“内联”。请注意,键盘快捷键在“thispage”示例中起作用。我所看到的这两者之间的唯一区别是它们使用的播放器js文件。“Inline”使用html.js播放器,“thispage”使用iframe.js。另外,我相信它使用了mootools库。有什么想法吗?这个问题是

所以我的网站用来显示一些动态文本。问题是我需要用户能够复制和粘贴该文本

右键单击并选择“复制”可以工作,但Ctrl+C不能(没有键盘快捷键可以),大多数人使用Ctrl+C?你可以看到我所说的一个例子


只需转到“web”示例并单击“内联”。请注意,键盘快捷键在“thispage”示例中起作用。我所看到的这两者之间的唯一区别是它们使用的播放器js文件。“Inline”使用html.js播放器,“thispage”使用iframe.js。另外,我相信它使用了mootools库。有什么想法吗?

这个问题是由一些JavaScript导致的,它会吃掉键盘事件。例如,您可以点击escape键,它被一个.js文件捕获并导致阴影框关闭


你的选择是破解文件并找到问题,或者不使用shadowbox。祝你好运

最好的选择是通过将“enableKeys”选项设置为false(请参阅)来禁用阴影框中的键盘导航快捷键

或者,您也可以按照Robby的建议修改shadowbox.js文件,,但仅当您需要使用shadowbox键盘导航时才这样做。我认为您希望搜索这段代码并对其进行修改,以便在使用快捷方式之一时,它仅取消默认事件(我添加了一些换行符和缩进):

我想你可以把它改成这样:

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事件处理程序吞下它不关心的任何击键。

解决方案是将enableKeys选项设置为false。但是,对于内联HTML的open()调用,这似乎不起作用。但是,如果在init()调用中设置它,它确实可以工作

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;
    }
};