2008-09-08 7 views
1

私のサイトでは、動的テキストを表示するのにshadowboxを使用しています。問題は、そのテキストをコピー&ペーストできるようにすることです。shadowboxを使用するとキーボードショートカットが無効になりますか?

右クリックし、選択コピー作品が、はCtrl +Cしない(何もキーボードショートカットは行いません)と、ほとんどの人がはCtrl +Cを使うのか?私が話していることの例をhereで見ることができます。

「ウェブ」の例に行き、「インライン」をクリックしてください。キーボードショートカットが「このページ」の例で動作することに注意してください。私が見る2つの違いは、使用するプレーヤーjsファイルだけです。 「インライン」はhtml.jsプレーヤーを使用し、「このページ」はiframe.jsを使用します。また、私はそれがmootoolsライブラリを使用すると信じています。何か案は?

答えて

2

"enableKeys"オプションをfalseに設定することによって、シャドウボックスのキーボードナビゲーションショートカットを無効にすることをお勧めします(this page参照)。

また、shadowbox.jsファイルをRobbyが提案して変更することもできますが、シャドウボックスのキーボードナビゲーションが必要な場合にのみが必要です。私は(私はいくつかの改行やインデントを追加しました)、それが唯一のショートカットのいずれかが使用されている場合、デフォルトのイベントをキャンセルするようにあなたは、このコードのブロックを検索し、それを修正したいと思います:

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")]() 
       } 
      } 
     } 
    } 
}; 

Iをあなたはより多くの本のように見えるためにそれを変更することができると思う:

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ファイルの1つにトラップされたエスケープ・キーを押すと、シャドウ・ボックスが閉じます。

ファイルをハックして問題を見つけたり、shadowboxを使用したりしないでください。がんばろう!

0

解決策は、enableKeysオプションをfalseに設定することです。しかし、これはインラインHTMLのopen()呼び出しでは機能していないようです。ただし、init()呼び出しで設定した場合はうまくいきます。

関連する問題