2016-02-19 14 views
6
var inputs = document.getElementsByTagName('input'); 
for (var i = 0; i < inputs.length; i++) { 
    inputs[i].onfocus = foo; 
} 
function foo(){ 
    alert(this.value); 
} 

Wenn die Eingabewerte:
obige Code funktioniert und warnt die korrekten Werte unabhängig von der Art eines Eingabefeldes.

Wenn die Eingabewerte vom Browser automatisch ausgefüllt werden:
Code funktioniert und alarmiert die richtigen Werte, wenn das Eingabefeld vom Typ text ist. Im Falle eines Passwortfeldes warnt es die leere Zeichenfolge!

Liegt dieses Verhalten an den Sicherheitsrichtlinien des Browsers? Oder ist eine Umgehung möglich? Ich habe es im Chrome-Browser versucht.Gibt es eine Möglichkeit, den Wert einer automatisch gefüllten Passwortbox in JavaScript zu erhalten? manuell eingegeben

+0

Bitte klären Sie: Haben Sie Probleme beim Zugriff auf das Attribut "value", das von der von Ihnen bedienten Seite ausgefüllt wurde, oder sprechen Sie darüber, wie Chrome Eingaben mit seinem Passwortmanager füllt? Wenn Letzteres, bitte sehen Sie meine Antwort. – CzechErface

+0

Wenn das Attribut 'value' bereits ausgefüllt ist, gibt es kein Problem. Das Problem ist, wenn der Browser die Eingabefelder automatisch mit seinem Passwortmanager füllt (wenn Sie sagen, dass Sie das Passwort für diese Site speichern). Wenn der Browser in diesem Fall kein Wertattribut in das DOM-Element einfügt, was macht er dann im Wesentlichen? Danke für deine Antwort Tschechisch, und es scheint, ich kann das nicht lösen! –

Antwort

2
$(document).ready(function() { 
    $("input") 
     .blur(password) 
     .trigger('blur'); 
}); 

function password() { 
    alert($(this).val()) 
} 

DEMO

+0

Keine Notwendigkeit für jQuery hier: https://jsfiddle.net/7hn3ojcw/3/ Ich denke @CzechErface ist sowieso auf dem Geld. Ich denke nicht, dass der Zugriff auf eine Eingabe, die der Benutzer ausgefüllt hat (wie in Ihrem Beispiel), das Problem ist, sondern eine Eingabe, die der Browser bereits ausgefüllt hat. – ste2425

+1

@ ste2425 Eigentlich funktioniert es auch mit vorbelegten pwd-Feldern, nur mit dem Standard-Passwort-Füller und der lastpass-Erweiterung von Chrome getestet, beide Eingabewerte waren leicht zugänglich. –

+0

@ArturasTamulatis ist das mit dem nativen oder jQuery? Wie auch immer, ich nehme meinen Kommentar zurück, ich würde es bearbeiten, aber es war über 5 min. – ste2425

1

Dies ist eine interessante Frage, weil ich glaube, dass Sie auf die Nebenwirkung eines Sicherheitsmerkmals in Chrome beziehen. Chrome (und wahrscheinlich andere Browser) füllen das DOM möglicherweise nicht mit dem automatisch ausgefüllten Passwort, da ein böswilliger Programmierer ein JavaScript schreiben könnte, das versucht, automatisch aufgefüllte Passwörter von ahnungslosen Opfern zu stehlen, sobald eine Seite geladen wird. Sie werden höchstwahrscheinlich erfordern, dass der Benutzer auf eine Senden-Schaltfläche klickt, bevor Sie auf diese Informationen zugreifen können. Sie können möglicherweise das Formular erzwingen, um den Wert zu senden und zu überprüfen, direkt bevor das Senden tatsächlich stattfindet. Wenn das funktioniert, können Sie die Einreichung einfach abbrechen, indem Sie in "onsubmit" false zurückgeben, und Sie haben jetzt das Passwort.

+0

Das Einreichen von Formularen mit JS ist kein Sicherheitsproblem? –

+0

Ich habe versucht, das Verhalten, das Akhil Dixit erfährt, ohne Erfolg zu wiederholen. Ich bin in der Lage, automatisch gefüllte Kennwörter aus dem DOM sowohl mit jQuery als auch mit reinem JavaScript zu lesen. Ich habe gerade versucht, einen möglichen Grund für die Inkonsistenz zwischen unseren beiden Browsern anzugeben (ich verwende auch Chrome). – CzechErface

Verwandte Themen