2013-08-11 30 views
5

Ich entwickle eine Desktop-Anwendung in Delphi XE4 mit TChromium-Komponente, um Google Voice-Webseite anzuzeigen.Simulieren klicken auf DIV

Ich brauche einen Anruf programmatisch starten und ich kann nicht einen Weg finden, den Javascript-Code hinter der Schaltfläche auslösen (es ist ein DIV) „CONNECT“:

enter image description here

TChromium ermöglicht auszuführen JavaScript-Code und ich habe es bereits geschafft, den Klick auf "CALL" -Knopf mit einem JavaScript-Code zu simulieren, der das Key Event mit dem Zeichen "c" simuliert, das das Panel anzeigt. Dies funktioniert, weil Google Voice Verknüpfungen hat und "c" eine gültige Verknüpfung zum Starten eines Anrufs ist. Auch mit Javascript kann ich die Nummer im Eingabefeld einstellen. Mein Hauptproblem ist, dass ich weiß nicht, wie ein Klick auf „CONNECT“ zu simulieren:

enter image description here

Wie Sie sehen können, gibt es keine ID, keinen onClick und es gibt keine Abkürzung, die eine Verbindung zu triggern Taste.

Ich kann ein Verweis auf dieses DIV mit dem folgenden Code erhalten:

document.getElementById(":87.mi").children[0].children[0].children[5].children[1].children[0].children[0].children[0].children[1]; 

Aber es ist nicht möglich, etwas anhängt .click() auszulösen. Ich nehme an, dass click() die onClick-Methode auslöst, dass sie nicht definiert ist. Gibt es eine Möglichkeit zu wissen, was JavaScript-Code ausführt, wenn jemand auf dieses div klickt?

Wenn der Fokus auf dem Eingang "Anzurufende Nummer" liegt, kann ich "TAB" drücken, um zu "Anzurufendem Telefon" zu navigieren, dann zu "Wahl merken" und schließlich zu "Verbinden", wo ich drücken kann Geben Sie die Taste ein, damit es auch funktioniert. Ich habe versucht, den gleichen Code wie am Anfang zu verwenden, um die CALL-Taste zu simulieren, aber dieses Mal mit TAB (Schlüsselcode 9 statt 67) und es funktioniert nicht, da der Fokus sich nicht bewegt.

Ich versuchte es programmatisch mit delphi zu tun, auch ohne Ergebnisse mouse_event, keybd_event, PostKeyExHWND, PostKeyEx32 und Postmessage mit als der Fokus von nicht weg bewegen

die einzige Option „Nummer zu anrufen“, die von jetzt funktioniert ist, die Maus mit Delphi mit SetCursorPos zu bewegen und einen Klick auf diesen Knopf zu simulieren, der die Koordinaten berechnet, aber das wird meine letzte Wahl sein, weil ich einen Javascript-Code bevorzugen würde, um es zu tun.

Alle Vorschläge sind willkommen!

+0

Sie bevorzugen eine Vanilla JS-Lösung für jQuery? Hast du eine Konsole zur Verfügung? Wird das Ereignis mit 'document.getElementsByClassName ('goog-button-base-content') ausgelöst [0] .click()'? – DevlshOne

+0

Ich denke, dass JQuery nicht in dieser Webseite enthalten ist. Wenn es möglich ist, es dynamisch aufzunehmen, ist es in Ordnung. Der Link dieser Webseite ist http: // google.com/Stimme, aber Sie müssen in den USA sein und zuerst eine Telefonnummer registrieren. –

+0

Dann bin ich aus diesem Spiel heraus ... Also werde ich wenigstens einen Link zu ['the question'] (http://stackoverflow.com/q/1668619/960757) hinzufügen, in dem ich nach der korrekten Lösung frage, für die Verwendung der offiziellen API für diesen Dienst. – TLama

Antwort

-1

Ich schlage die nächste Lösung vor.

in einer JavaScript-Datei, die aus der Sicht, stellen Sie den nächsten Code importiert werden müssen:

$(".goog-button-base-content").click(function(){ 
    //CODE HERE 
}); 

Was Sie hier tun, ist, dass jedes Mal, dass wir die div gedrückt, der diese Klasse hat, beginnen Sie die Logik in "CODE HERE"

(Sorry für mein schlechtes Englisch)

ich hoffe, nutzbringend sein. Wir sehen uns