2008-09-08 147 views
1

所以我的网站使用shadowbox来显示一些动态文本。问题是我需要用户能够复制和粘贴该文本。使用shadowbox禁用键盘快捷键?

右键单击并选择复制作品,但按Ctrl +ç不(无键盘快捷键),大多数人使用按Ctrl +Ç?你可以看到我在说什么here的例子。

只需转到“web”示例并单击“inline”。注意键盘快捷键可以在“本页面”示例上工作。我看到的两个唯一的区别是他们使用的播放器js文件。 “内联”使用html.js播放器,“本页”使用iframe.js。另外,我相信它使用了mootools库。有任何想法吗?

回答

2

最佳选择是通过将“enableKeys”选项设置为false来禁用shadowbox中的键盘导航快捷方式(请参阅this page)。

另外,你可以做什么罗比建议和修改shadowbox.js文件,但只有这样做,如果你需要有阴影盒键盘导航。我认为你要搜索的代码块,并修改它,使它只取消,如果其中一个快捷方式,使用默认的事件(我已经添加了一些换行和缩进):

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

这可以防止太极拳事件处理吞咽,它不关心任何按键动作。

1

这个问题是由一些吃键盘事件的JavaScript引起的。例如,您可以点击退出键,该键是由.js文件中的一个捕获的,并导致影子框关闭。

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

0

解决方法是将enableKeys选项设置为false。但是,这似乎不适用于内联HTML的open()调用。但是,如果您在init()调用中设置它,它确实有效。