Gibt es eine Methode, mit der ich feststellen kann, ob ein Benutzer einen Tastenklick ausgeführt hat und nicht eine automatisierte Methode (JavaScript), die ein Benutzer in seinen Browser geladen hat Konsole oder andere Browser-Entwickler-Tool?Ermitteln, ob die Schaltfläche auf einen realen Benutzer klickt oder durch ein Skript ausgelöst wird
Ich habe versucht, die folgenden Methoden in verschiedenen Stackoverflow-Beiträge vorgeschlagen, aber keiner von ihnen scheint zu funktionieren. REF: How to detect if a click() is a mouse click or triggered by some code?
Script Nachweismethoden versucht und sind gescheitert:
mybutton.click(function (e) {
if (!e.which) {
//Triggered by code NOT Actually clicked
alert(' e.which - not a real button click')
} else if ('isTrusted' in e && !e.isTrsuted) {
//Triggered by code NOT Actually clicked
alert(' e.isTrusted - not a real button click')
} else if (e.originalEvent === undefined) {
//Triggered by code NOT Actually clicked
alert(' e.originalEvent - not a realbutton click')
}
// else if (!e.focus) {
// //triggered // does not detect e.focus on a real btn click
// alert(' e.focus - not a realbutton click')
// }
else {
// Button hopefully clicked by a real user and not a script
}
})
Wenn ich das folgende Skript ausführen, um die Schaltfläche können Sie vom Chrome-Browser-Konsole keine der oben genannten Methoden Fallen sie auslösen, wie durch eine ausgelöste Skript.
var button = document.getElementById("btnSubmit");
button.click();
=========================================== ==========================
Vielen Dank für alle Ihre Antworten und Dank Stackoverflow für die Bereitstellung einer so großen Website, die so viel Wissensaustausch ermöglicht und uns Technikfreaks eine ungezählte Anzahl von Stunden spart.
Es scheint, dass ich immer noch keine zuverlässige Methode habe. Alle 3 Browser (FF, IE & Chrome) bieten eine Entwickler/Konsole-Schnittstellen für einen Benutzer zum Ausführen/injizieren ein Javascript auf meiner Webseite. Es scheint, dass jede Browser-Variante einige Ereigniseigenschaftswerte etwas anders erfasst. Beispiel: Chrome erfasst den Unterschied zwischen einem Skript-aktivierten Cick und einem echten Benutzer mit e.screenX, aber im IE: e.screenX hat denselben Wert sowohl für einen Skriptklick (synthetisch) als auch für eine Benutzerschaltfläche
Folgendes Die Erkennungsmethoden funktionierten entweder überhaupt nicht oder waren in den verschiedenen Browsern inkonsistent: e.Wie e.isTrsuted e.originalEvent (event.source! = window) (e.distance! = null)
Das mousedown-Ereignis scheint zu nur durch einen echten Benutzer Button Klick ausgelöst werden, aber ich muss davon ausgehen, gibt es einige Skript-Methode, um einen Mausklick zusätzlich zu einem Button Click-Ereignis zu emulieren
$ (me.container + '.mybutton'). mousedown (Funktion (e) {alert ('mausisdown real button click'); }
Wenn jemand eine zuverlässige Methode herausfinden kann, die über mehrere Browser hinweg funktioniert, die den Unterschied zwischen einem synthetischen (Skript) -Knopfklick und einem Knopfklick durch einen Benutzer erkennt, verdienen Sie den Superheldenstatus.
Ab jetzt kann ich nicht eine akzeptierte Antwort sehen. Und schlimmer noch, nicht eine, die ich akzeptieren würde. –
Für firefox e.isTrusted arbeitet, weiß nicht für andere. ** e.isTrsuted ** funktioniert nicht ;-) –