Hallo
Der Titel sag ja schon das meiste, ich möchte wie das so üblich ist bei den heutigen Browsern eine Autovervollständigung für Formulare.
Leider habe ich keine Ahnung wie ich das angehe.
Vielleicht kann ich ja mit dem jswebkit die Formularfelder finden, aber wie mache ich dann die vervollständigungs Liste die an dem Formularfeld auftauchen soll.
Das setzten des Textes müsste dann auch wieder durch den jswebkit machbar sein.
Oder wie macht man das, hat der QtWebkit da schon was eingebaut?
Gruß
Andyh
QtWebkit Formulare Autovervollständigung
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Eingebaut: Nicht, dass ich wüsste. Ich hätte jetzt gesagt, dass du dir vielleicht den Quelltext von Arora angucken könntest (Browser, der mit Qt entwickelt wurde), aber ich glaube, die haben das auch noch nicht drin.
Hallo
Danke für deine Antwort.
Ich halte es für eine sehr praktische Sache, deswegen will ich es unbedingt haben!
Ich habe glaub ich einen Weg gefunden:
Ich binde mit evaluateJavaScript() jQuery und jquery.autocomplete ein.
jetzt versuche ich noch über den Quelltext die Formulare zu finden (Beautifulsoup werde ich dazu nehmen) und dann noch für jedes gefundenes Formularfeld den passenden Javascript.
Das ist dann mal zum Eintragen, wie ich die Werte beim abschicken abspeichern kann ist noch gelöst.
Gruß
Andyh
Danke für deine Antwort.
Ich halte es für eine sehr praktische Sache, deswegen will ich es unbedingt haben!
Ich habe glaub ich einen Weg gefunden:
Ich binde mit evaluateJavaScript() jQuery und jquery.autocomplete ein.
jetzt versuche ich noch über den Quelltext die Formulare zu finden (Beautifulsoup werde ich dazu nehmen) und dann noch für jedes gefundenes Formularfeld den passenden Javascript.
Das ist dann mal zum Eintragen, wie ich die Werte beim abschicken abspeichern kann ist noch gelöst.
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Zum Finden der Formulare böte sich auch `mechanize` an. Du müsstest da dann nur noch duch die Formulare iterieren und bräuchtest dich nicht mehr um das Parsen auf HTML-Basis zu kümmern:
Alternativ ließe sich auch nutzen:
Code: Alles auswählen
In [1]: import mechanize
In [2]: br = mechanize.Browser()
In [3]: br.open('http://www.youtube.de/')
Out[3]: <response_seek_wrapper at 0xb7606cacL whose wrapped object = <closeable_response at 0xb760402cL
whose fp = <socket._fileobject object at 0xb75fba04>>>
In [4]: [form for form in br.forms()]
Out[4]:
[<ClientForm.HTMLForm instance at 0x9acee4c>,
<ClientForm.HTMLForm instance at 0x9acefec>,
<ClientForm.HTMLForm instance at 0x9ace64c>]
Code: Alles auswählen
evaluateJavaScript("document.forms")
Hallo
Deine zwei Vorschläge sind nicht schlecht.
Ich habe es jetzt so:
Gruß
Andyh
Deine zwei Vorschläge sind nicht schlecht.
Ich habe es jetzt so:
Code: Alles auswählen
def can_form_fill(self, form):
'''
testet ob man ein formular automatisch ausfüllen darf
'''
if form.has_key("autocomplete"):
if form["autocomplete"] == "off":
return False
else:
return True
else:
return True
def form_auto_comp(self):
'''
erstellt die autovervollständigung
'''
html = self.get_html()
soup = BeautifulSoup(html)
felder = []
for form in soup.findAll("form"):
if self.can_form_fill(form):
for x in soup.findAll("input"):
if x.has_key("type"):
if type != "password":
if x.has_key("name"):
felder.append(x["name"])
elif x.has_key("id"):
felder.append(x["id"])
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Hallo
zum auslesen der Daten gibt es diesen Beispiel:
http://doc.trolltech.com/4.5/webkit-formextractor.html
Komme da nur nicht mit
Kann mir da jemand weiter helfen?
Gruß
Andyh
zum auslesen der Daten gibt es diesen Beispiel:
http://doc.trolltech.com/4.5/webkit-formextractor.html
Komme da nur nicht mit

Kann mir da jemand weiter helfen?
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Naja, der Quellcode verrät nur die Hälfte, bzw. kann ich den Sourcecode des HTML-Dokumentes nicht finden.
Folgendes passiert wahrscheinlich auf der Seite:
- Du befüllst das Formular mit Daten
- das Formularsubmit triggert dann die JS-Funktion formExtractor.setValue(wert1, wert1...), welche direkt mit den LineEdits rechts verknüpft ist
Wo kommt formExtractor im JS-Kontext her? In der Methode populateJavaScriptWindowObject() wird das gesamte FormExtractor-Objekt mittels addToJavaScriptWindowObject("formExtractor", this) in den Kontext gehievt und unter formExtractor bekannt gemacht. Slots werden dann automatisch zu JS-Methoden, und Du kannst halt setValue() mit dem entsprechenden Ergebnis, daß die LineEdits befüllt werden, in JS aufrufen.
Folgendes passiert wahrscheinlich auf der Seite:
- Du befüllst das Formular mit Daten
- das Formularsubmit triggert dann die JS-Funktion formExtractor.setValue(wert1, wert1...), welche direkt mit den LineEdits rechts verknüpft ist
Wo kommt formExtractor im JS-Kontext her? In der Methode populateJavaScriptWindowObject() wird das gesamte FormExtractor-Objekt mittels addToJavaScriptWindowObject("formExtractor", this) in den Kontext gehievt und unter formExtractor bekannt gemacht. Slots werden dann automatisch zu JS-Methoden, und Du kannst halt setValue() mit dem entsprechenden Ergebnis, daß die LineEdits befüllt werden, in JS aufrufen.