Erkennen, wenn Sie den Knopf klicken Sie auf real-user oder ausgelöst durch ein Skript

Gibt es eine Methode, die es mir ermöglicht, zu erkennen, ob das klicken auf eine Schaltfläche ausgeführt wurde-von einem echten Benutzer und nicht eine automatisierte Methode (javascript), dass ein Benutzer geladen ist, auf Ihrem browser die Entwickler-Konsole oder andere browser-Entwickler-tool?

Ich habe versucht, die folgenden Methoden vorgeschlagen, die in verschiedenen stackoverflow-posts, aber keiner von Ihnen scheint zu arbeiten.
REF: Wie zu erkennen, wenn ein klicken Sie auf() ist ein Mausklick oder ausgelöst durch irgendeinen code?

Skript-Detection-Methoden 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 führen Sie das folgende Skript zum auslösen der Schaltfläche wählen Sie aus dem Chrome-browser-Konsole keine der oben genannten Methoden fallen als, ausgelöst durch ein Skript.

var button = document.getElementById("btnSubmit");
button.click();

==========================================================================

Danke für alle Antworten und danke an stackoverflow für die Bereitstellung solcher eine große Website, die so viel wissen zu teilen und für das speichern von uns Technik-Freaks eine ungezählte Anzahl von Stunden.

Scheint es, dass ich immer noch keine zuverlässige Methode. Allen 3 Browsern (FF, IE & Chrome) bieten eine Entwickler - /Konsolen-interfaces für einen Benutzer zu laufen/Spritzen, ein javascript auf meiner Webseite. Es scheint, dass jeder browser, der Geschmack fallen einige Ereignis-Eigenschaft-Werte ein wenig anders. Zum Beispiel: Chrom-traps der Unterschied zwischen einem Skript aktiviert klicken und ein echter Benutzer mit e.screenX aber im IE: e.screenX hat den gleichen Wert für beide ein Skript auf (synthetische) und eine user-Taste, klicken Sie auf

Folgende Nachweismethoden, die entweder nicht arbeiten oder sind inkonsistent in den verschiedenen Browsern: e.die e ist.isTrsuted e.originalEvent (event.Quelle != Fenster) (e.Abstand != null)

Das mousedown-Ereignis wird nur ausgelöst, der von einem realen user-Taste klicken, aber ich muss annehmen, dass es einige Skript-Methode zur Emulation eines mousedown-neben einer Schaltfläche click-Ereignis

$(me.container + ' .mybutton').mousedown(function (e) { 
    alert('mouseisdown real button click'); 
}

Wenn jemand herausfinden kann, ist eine zuverlässige Methode, die funktioniert in mehreren Browsern, erkennt den Unterschied zwischen einem synthetischen (Skript) - Taste, klicken Sie auf und klicken auf eine Schaltfläche von einem Benutzer, Sie verdienen Superhelden-status.

Wie jetzt, ich kann nicht sehen, eine akzeptierte Antwort. Und schlimmer noch, nicht eine, die ich akzeptieren würde.
Für firefox e.isTrusted arbeitet, nicht wissen, für andere. e.isTrsuted funktioniert nicht 😉

InformationsquelleAutor user151402 | 2013-02-10

Schreibe einen Kommentar