Question

Mon site utilise donc boîte à ombre pour afficher du texte dynamique.Le problème est que j'ai besoin que l'utilisateur puisse copier et coller ce texte.

Un clic droit et une sélection de copie fonctionnent mais Ctrl+C ce n'est pas le cas (aucun raccourci clavier ne le fait) et la plupart des gens utilisent Ctrl+C?Vous pouvez voir un exemple de ce dont je parle ici.

Accédez simplement aux exemples « Web » et cliquez sur « en ligne ».Notez que les raccourcis clavier fonctionnent sur l'exemple « cette page ».La seule différence entre les deux que je vois réside dans les fichiers Player JS qu'ils utilisent."Inline" utilise le lecteur html.js et "cette page" utilise iframe.js.De plus, je crois qu'il utilise la bibliothèque mootools.Des idées?

Était-ce utile?

La solution

La meilleure option est de désactiver les raccourcis clavier de navigation dans la shadowbox en définissant l'option "enableKeys" sur false (voir cette page).

Alternativement, vous pouvez faire ce que Robby suggère et modifier le fichier shadowbox.js, mais ne le faites que si vous avez besoin de la navigation au clavier shadowbox.Je pense que vous souhaitez rechercher ce bloc de code et le modifier pour qu'il n'annule l'événement par défaut que si l'un des raccourcis est utilisé (j'ai ajouté quelques sauts de ligne et indentation) :

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

Je pense que tu pourrais le modifier pour qu'il ressemble davantage à ceci :

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

Cela devrait empêcher le gestionnaire d'événements shadowbox d'avaler des frappes dont il ne se soucie pas.

Autres conseils

Ce problème est dû à certains JavaScript qui consomment les événements du clavier.Vous pouvez par exemple appuyer sur la touche d'échappement, qui est piégée par l'un des fichiers .js et provoque la fermeture de la zone fantôme.

Vos choix sont de pirater les fichiers et de trouver le problème, ou de ne pas utiliser shadowbox.Bonne chance!

La solution consiste à définir l’option activateKeys sur false.Cependant, cela ne semble pas fonctionner sur un appel open() pour le HTML en ligne.Cela fonctionne cependant si vous le définissez dans votre appel init().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top