使用Shadowbox会禁用键盘快捷键吗?
时间:2020-03-05 18:49:28 来源:igfitidea点击:
因此,我的网站使用shadowbox来显示一些动态文本。问题是我需要用户能够复制和粘贴该文本。
右键单击并选择复制有效,但是Ctrl + C不起作用(没有键盘快捷键),大多数人使用Ctrl + C?我们可以在此处看到我在说什么的示例。
只需转到"网络"示例,然后单击"内联"。请注意,键盘快捷键确实可以在"此页面"示例中使用。我看到的两者之间的唯一区别是它们使用的播放器js文件。 "内联"使用html.js播放器,"此页面"使用iframe.js。另外,我相信它使用了mootools库。有任何想法吗?
解决方案
回答
此问题是由某些占用键盘事件的JavaScript引起的。例如,我们可以按下转义键,该键被.js文件之一捕获,并导致阴影框关闭。
选择是破解文件并查找问题,或者不使用shadowbox。祝你好运!
回答
最好的选择是通过将" enableKeys"选项设置为false来禁用影子框中的键盘导航快捷方式(请参阅本页)。
或者,我们可以执行Robby的建议并修改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事件处理程序吞下任何无关紧要的按键。
回答
解决方案是将enableKeys选项设置为false。但是,这似乎不适用于内联HTML的open()调用。但是,如果我们在init()调用中进行设置,它确实可以工作。