3

そのため、私のサイトではシャドウボックスを使用して動的テキストを表示しています。問題は、ユーザーがそのテキストをコピーして貼り付ける必要があることです。

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

「Web」の例に移動して、「インライン」をクリックしてください。「このページ」の例では、キーボード ショートカットが機能することに注意してください。私が見る 2 つの唯一の違いは、使用するプレーヤー js ファイルです。「インライン」は html.js プレーヤーを使用し、「このページ」は iframe.js を使用します。また、mootools ライブラリを使用していると思います。何か案は?

4

3 に答える 3

2

最適なオプションは、「enableKeys」オプションを false に設定して、シャドウボックスのキーボード ナビゲーション ショートカットを無効にすることです (このページを参照)。

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

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

これにより、シャドーボックスのイベント ハンドラーが重要でないキーストロークを飲み込むのを防ぐ必要があります。

于 2008-09-12T02:32:50.233 に答える
1

この問題は、キーボード イベントを食べる JavaScript によって引き起こされます。たとえば、エスケープ キーを押すと、.js ファイルの 1 つにトラップされ、シャドー ボックスが閉じます。

ファイルをハックして問題を見つけるか、シャドーボックスを使用しないかを選択します。幸運を!

于 2008-09-12T01:03:10.637 に答える
0

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

于 2009-09-24T17:07:34.313 に答える