所以我的网站使用shadowbox来显示一些动态文本。问题是我需要用户能够复制和粘贴该文本。
右键单击并选择复制有效,但Ctrl+C无效(没有键盘快捷键)并且大多数人使用Ctrl+ C?你可以看到我在这里谈论的一个例子。
只需转到“网络”示例并单击“内联”即可。请注意,键盘快捷键确实适用于“此页面”示例。我看到的两者之间的唯一区别是他们使用的播放器 js 文件。“内联”使用 html.js 播放器,“本页”使用 iframe.js。另外,我相信它使用了 mootools 库。有任何想法吗?
最好的选择是通过将“enableKeys”选项设置为 false 来禁用 shadowbox 中的键盘导航快捷键(请参阅此页面)。
或者,您可以按照 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 事件处理程序吞下它不关心的任何击键。
这个问题是由一些吃键盘事件的 JavaScript 引起的。例如,您可以点击转义键,该键被 .js 文件之一捕获并导致阴影框关闭。
您的选择是破解文件并找到问题,或者不使用 shadowbox。祝你好运!
解决方案是将 enableKeys 选项设置为 false。但是,这似乎不适用于内联 HTML 的 open() 调用。但是,如果您在 init() 调用中设置它,它确实有效。