2008-09-08 176 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()調用中設置它,它確實有效。