Verfolgen Sie die Nutzung von "Strg + F" auf einer Website durch Besucher?

7

Wäre es theoretisch möglich zu erkennen (z. B. über JavaScript), ob ein Benutzer eine Webseite mit der Windows-Verknüpfung Ctrl+ Foder dem Mac-Äquivalent Command+ Fin seinem Browser abfragt ?

Der erste Schritt wäre zu erkennen, ob diese Funktion aufgerufen wurde, aber es wäre ein anderes Ballspiel, ihre Tastenanschläge zu verfolgen ...


Ich frage, weil Web-Apps häufig Tastaturkürzel neu verkabeln, um andere Aufgaben zu erledigen (oder sie werden vollständig deaktiviert, zum Beispiel in einigen Fällen von HTML5 canvas, die Tastenkombination Command+ Wzum Schließen der Registerkarte nicht Arbeit). Dies ist wahrscheinlich ein anderer Mechanismus, und ich habe keine großen Hoffnungen. Darüber hinaus wissen ohnehin nur etwa 10% der Benutzer , wie man die Ctrl+ F-Funktion verwendet.

Baumr
quelle
1
"nur 10%" - verblüfft!
MrWhite
@ w3d, was sagst du?
Baumr
1
Ich drücke nur meine Überraschung aus, dass "nur etwa 10% der Benutzer [Berichten zufolge] wissen, wie man Strg + F verwendet". (verblüfft - "Wie vor Erstaunen und Überraschung stumm geschlagen")
MrWhite
Kein Sarkasmus beabsichtigt? ;)
Baumr
Ich hatte nicht vor, Sarkasmus zu haben, obwohl ich diese Statistik zugegebenermaßen ziemlich schwer zu schlucken finde! :)
MrWhite

Antworten:

3

Wenn Sie die Ereignistastatur Ctrl+ erfassen Fund mit dem Öffnen des Standardsuchfelds des Browsers fortfahren möchten, können Sie Folgendes tun:

var KEY_CTRL = 17;
var KEY_f = 70;

var isReserved = false;
var useExclusiveKeyEvent = false;
var isNewSearchEvent = false;


/*THIS VARIABLE IS RENDERED BY SERVER SIDE*/
var clientRandomKey = "78349DE472AA30032DE2DF344FF28374";

window.onkeyup=function(ev){
  if(ev.which == KEY_CTRL){
    isReserved=false;
  }
}
window.onkeydown=function(ev){
  //!IMPORTANT NOT MAKE UI DELAY IN THIS FUCTION
  if(ev.which == KEY_CTRL) {
       isReserved=true;
  }
    if((isReserved==true)&&(ev.which == KEY_f)) {       
    var currentDate = new Date();
    console.log( "INTO EVENT FUNCTION >\n   "+ currentDate+ " \n   ID: "+clientRandomKey+"\n   launch search a word");
    isNewSearchEvent=true;
    if(useExclusiveKeyEvent){
      return false;}
    }
}

window.setInterval(function(){            
    if(isNewSearchEvent){
      isNewSearchEvent=false;
      //TODO ajax send code
      var currentDate = new Date();
      var msg = "OUTSIDE EVENT FUNCTION >\n   " + currentDate+ " \n   ID: "+clientRandomKey+"\n   launch search a word"
      console.log(msg);
      alert(msg);
    }
},2500);

Dies ist ein Live-Beispiel .

Wie Sie im Beispiel sehen können, sendet die Ereignisfunktion beim Drücken der richtigen Tastaturkombination ein Ereignis "log string"in der Konsole ("EVENT INTO FUNCTION"), während der Status eines Flags ( isNewSearchEvent) geändert wird .

Dieses Flag wird in einem Timer ausgewertet, um ein anderes "log string"in der Konsole zu senden ("OUTSIDE EVENT FUNCTION").

und öffnen Sie eine Warnung mit derselben Nachricht.

Protokollkonsole

Diese doppelte Passage ist notwendig, da keine Unterbrechungen in der Ereignisfunktion erzeugt werden können, die mit einer korrekten Erfassungsgeschwindigkeit abhören sollten.

RTOSkit
quelle
Perfekt danke! Sehr interessant. Wäre es danach möglich, Tastenanschläge zu verfolgen?
Baumr
Sicher, ist eine korrekte Interpretation der realen Möglichkeiten
RTOSkit
4

Ja es ist möglich:

$(document).ready(function(){
  ctrl = false;
  document.addEventListener("keydown", function(e){
    if(e.which == 17){
      ctrl = true;
    }
    if(e.which == 70 && ctrl == true){
      e.preventDefault();

    }
  }, true);

  document.addEventListener("keyup", function(e){
    if(e.which == 17){
      ctrl = false;

    }
  });
});

Und mit .preventDefault()stornieren wir die reguläre Veranstaltung. Aber für die Befehlstaste bin ich mir nicht sicher, was es ist. Einige sagen, dass es ist, e.metaKeywenn Sie jQuery verwenden, da das Problem darin besteht, dass die Befehlstaste nicht in jedem Browser den gleichen JavaScript-Schlüsselcode hat, also müssen Sie damit umgehen manuell oder jQuery kann Ihnen helfen.

Wenn Sie es testen möchten http://jsfiddle.net/a5t2q/

BEARBEITEN: Sie müssen auf den Abschnitt "Ergebnis" klicken, um zu sehen, dass Strg + F blockiert ist, da dieser Abschnitt in diesem Fall als "Dokument" bezeichnet wird.

user1455261
quelle