2008-09-08 9 views
1

So verwendet meine Website shadowbox, um einige dynamische Text anzuzeigen. Problem ist, dass der Benutzer diesen Text kopieren und einfügen kann.Shadowbox deaktiviert Tastaturkürzel?

der rechten Maustaste und wählen Kopie funktioniert, aber Ctrl +C nicht (keine Tastenkombinationen zu tun) und die meisten Leute benutzen Ctrl +C? Sie können ein Beispiel dafür sehen, wovon ich rede here.

Gehen Sie einfach zu den "Web" -Beispielen und klicken Sie auf "Inline". Beachten Sie, dass Tastaturkürzel auf dem Beispiel "Diese Seite" funktionieren. Der einzige Unterschied zwischen den beiden, die ich sehe, ist der Player JS-Dateien, die sie verwenden. "Inline" verwendet den html.js-Player und "diese Seite" verwendet iframe.js. Außerdem glaube ich, dass es die Mootools-Bibliothek verwendet. Irgendwelche Ideen?

Antwort

2

Die beste Option ist das Deaktivieren der Tastenkombinationen für die Tastaturnavigation in der Shadowbox, indem Sie die Option "enableKeys" auf false setzen (siehe this page).

Alternativ könnten Sie tun, was Robby vorschlägt und ändern Sie die Shadowbox.js Datei, aber tun Sie dies nur, wenn Sie die Shadowbox-Tastatur Navigation haben müssen. Ich denke, dass Sie sich für diesen Block von Code gesucht werden soll und es ändern, so dass es nur das Standardereignis abbricht, wenn eine der Abkürzungen verwendet (Ich habe ein paar Zeilenumbrüche und Einrückungen hinzugefügt):

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 Sie denken, es mehr wie folgt aussehen ändern könnte:

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

Dies sollte die shadowbox Event-Handler aus dem Schlucken alle Tastenanschläge verhindern, dass es nicht darum schert.

1

Dieses Problem wird von etwas JavaScript verursacht, das Tastaturereignisse isst. Sie können zum Beispiel den Escape-Schlüssel drücken, der von einer der .js-Dateien abgefangen wird und das Schließen der Schattenbox bewirkt.

Sie haben die Wahl, sich durch die Dateien zu hacken und das Problem zu finden, oder shadowbox nicht zu verwenden. Viel Glück!

0

Die Lösung besteht darin, die Option enableKeys auf false zu setzen. Dies scheint jedoch bei einem Aufruf von open() für Inline-HTML nicht zu funktionieren. Es funktioniert jedoch, wenn Sie es in Ihrem Aufruf von init() festlegen.