2015-08-17 11 views
6

Ich schreibe in der Hoffnung, herauszufinden, wie angularJS zu lösen, um sein Modell zu aktualisieren, wenn Autovervollständigung von einem Browser Erweiterungen durchzuführen. Ich weiß, dass einige andere Apps (Passwort-Manager wie LastPass) dies erfolgreich machen.Safari Extension - Aktualisieren von angularJS Modell auf Formular Autovervollständigung

Ich baue eine kleine Safari-Erweiterung, die mir hilft, das (lächerliche) Sandkasten-Benutzererstellungsformular von Apple automatisch zu vervollständigen, das 10 Eingabefelder und ein paar Auswahlelemente hat.

Bis jetzt habe ich es geschafft, die Eingabefelder mit jQuery zu erhalten und ihren Wert mit .val() zu setzen. Dies führt jedoch nicht dazu, dass angularJS sein Modell aktualisiert. Obwohl also Text in den Eingabefeldern vorhanden ist, glaubt angular, dass kein Text vorhanden ist und das Formular nicht validiert werden kann.

Das Problem könnte leicht behoben werden, wenn ich Zugriff auf das eckige Objekt bekommen kann, aber ich kann nicht in der Lage sein, das zu tun. Mein injiziertes Skript gibt undefined zurück, wenn ich versuche, auf angular zuzugreifen. Also denke ich, dass ich das eckige Objekt entweder falsch abrufe oder dass ich das auf eine andere Weise lösen sollte.

Zu beachten, dass ich bereits einige der anderen im Internet genannten Tricks ausprobiert habe: input.trigger('input'); und andere solche Sachen.

+0

Haben Sie das Feld ng-Modell festgelegt? – Jacques

+2

das ist sehr relevant: http://StackOverflow.com/a/11710295/1078450 – wesww

+0

@Jacques auf einem Element? Ich verwende ein Formular, das von jemand anderem gemacht wurde, ich erstelle kein eigenes Formular ... – Andrei

Antwort

0

Klingt so, als müssten Sie das Formular fälschlicherweise denken, dass Sie etwas in die Eingabe eingegeben haben, anstatt nur den Wert der Eingabe zu setzen, was meiner Meinung nach nicht zu einem Fokusereignis führt. Verwenden Sie JQuery zum Fokussieren und dann zum Unfokussieren der Eingaben. Dies sollte den Benutzer simulieren, indem er auf das Eingabefeld klickt und dann das Eingabefeld verlässt. Wenn Apple ihre Form richtig erstellt, sollte dies Validierungen/Modellupdates auslösen. Hoffe das hilft.

Verwandte Themen