Domanda

Quindi il mio sito utilizza shadowbox per visualizzare del testo dinamico.Il problema è che ho bisogno che l'utente sia in grado di copiare e incollare quel testo.

Fare clic con il tasto destro e selezionare Copia funziona ma Ctrl+C non lo fa (nessuna scorciatoia da tastiera lo fa) e la maggior parte delle persone lo usa Ctrl+C?Puoi vedere un esempio di ciò di cui sto parlando Qui.

Basta andare agli esempi "web" e fare clic su "in linea".Nota che le scorciatoie da tastiera funzionano nell'esempio "questa pagina".L'unica differenza tra i due che vedo sono i file js del lettore che usano."Inline" utilizza il player html.js e "questa pagina" utilizza iframe.js.Inoltre, credo che utilizzi la libreria Mootools.Qualche idea?

È stato utile?

Soluzione

L'opzione migliore è disabilitare le scorciatoie di navigazione da tastiera nella shadowbox impostando l'opzione "enableKeys" su false (vedi questa pagina).

In alternativa potresti fare ciò che suggerisce Robby e modificare il file shadowbox.js, ma fallo solo se hai bisogno della navigazione tramite tastiera shadowbox.Penso che tu voglia cercare questo blocco di codice e modificarlo in modo che annulli l'evento predefinito solo se viene utilizzata una delle scorciatoie (ho aggiunto alcune interruzioni di riga e rientri):

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

Penso che potresti cambiarlo per assomigliare più a questo:

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

Ciò dovrebbe impedire al gestore di eventi shadowbox di inghiottire qualsiasi sequenza di tasti di cui non gli interessa.

Altri suggerimenti

Questo problema è causato da alcuni JavaScript che mangiano eventi della tastiera.Puoi premere il tasto Esc, ad esempio, che viene intrappolato da uno dei file .js e provoca la chiusura della shadow box.

Le tue scelte sono hackerare i file e trovare il problema o non utilizzare shadowbox.Buona fortuna!

La soluzione è impostare l'opzione EnableKeys su false.Tuttavia, questo non sembra funzionare su una chiamata open() per HTML in linea.Funziona, tuttavia, se lo imposti nella chiamata init().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top