2008-09-08 20 views
1

Donc, mon site utilise shadowbox pour afficher du texte dynamique. Le problème est que j'ai besoin que l'utilisateur puisse copier et coller ce texte.L'utilisation de shadowbox désactive les raccourcis clavier?

clic droit et sélectionner les travaux de copie mais Ctrl +C ne fonctionne pas (pas de raccourcis clavier ne) et la plupart des gens utilisent Ctrl +C? Vous pouvez voir un exemple de ce dont je parle here.

Allez dans les exemples "web" et cliquez sur "inline". Notez que les raccourcis clavier fonctionnent sur l'exemple "this page". La seule différence entre les deux que je vois est les fichiers js du joueur qu'ils utilisent. "Inline" utilise le lecteur html.js et "this page" utilise iframe.js. Aussi, je crois qu'il utilise la bibliothèque mootools. Des idées?

Répondre

2

La meilleure option consiste à désactiver les raccourcis clavier de navigation dans la zone d'ombre en définissant l'option "enableKeys" sur false (voir this page).

Vous pouvez aussi faire ce que Robby suggère et modifier le fichier shadowbox.js, mais seulement si vous avez besoin de la navigation au clavier de la shadowbox. Je pense que vous voulez rechercher ce bloc de code et de le modifier afin qu'il annule uniquement l'événement par défaut si l'un des raccourcis est utilisé (je l'ai ajouté quelques sauts de ligne et indention):

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 que vous pourriez changer pour ressembler à 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 toutes les frappes qu'il ne se soucie pas.

1

Ce problème est dû à un code JavaScript qui entraîne des événements de clavier. Vous pouvez par exemple appuyer sur la touche d'échappement qui est interceptée par l'un des fichiers .js et ferme la boîte.

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

0

La solution consiste à définir l'option enableKeys 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().