Änderungen in QWebPage bemerken
Verfasst: 24. November 2011 12:03
Hallo,
ich habe ein Qt-Programm, das im Grunde nur ein Browser für eine ganz spezielle Seite ist. Diese Seite lade ich in eine QWebPage (angezeigt in einem QWebView) und manipuliere sie ziemlich stark. Unter anderem will ich auch z.B. alle Klicks auf Buttons abfangen. Um das zu erreichen, packe ich per button.setAttribute("onsubmit", js); eigenen Javascript-Code in das onsubmit-Event des Formulars und rufe darin einen Slot auf, deren Klasse ich vorher per addToJavaScriptWindowObject bekannt gemacht habe. Soweit funktioniert dann auch alles...
Diese Buttons sind leider alle in Bereichen der Webseite, die ab und zu per AJAX neu geladen werden. Ist absolut grausam, aber leider habe ich keinen Einfluß auf den Quellcode der Seite. Meine Lösung im Moment ist, dass ich das onsubmit-Event einfach alle 10ms neu setze, um ja keinen Klick zu verpassen. Ist natürlich mehr als unschön...
Jetzt kann ich mir ja von der QWebPage den QNetworkAccessManager holen und auf das finished-Event warten. Das wird auch jedes Mal schön gefeuert, wenn ein Teil der Seite neu geladen wird, aber natürlich BEVOR es angezeigt wird. Das hilft mir also auch nur bedingt weiter, da ich an der Stelle ja auch keinen Einfluß mehr auf die Antwort des Servers habe, diese aber auch noch nicht auf der Webseite zu sehen ist.
Hat vielleicht einer von Euch eine Idee, wie ich dieses Problem sauber lösen könnte? Danke!
Gruss,
fallen
ich habe ein Qt-Programm, das im Grunde nur ein Browser für eine ganz spezielle Seite ist. Diese Seite lade ich in eine QWebPage (angezeigt in einem QWebView) und manipuliere sie ziemlich stark. Unter anderem will ich auch z.B. alle Klicks auf Buttons abfangen. Um das zu erreichen, packe ich per button.setAttribute("onsubmit", js); eigenen Javascript-Code in das onsubmit-Event des Formulars und rufe darin einen Slot auf, deren Klasse ich vorher per addToJavaScriptWindowObject bekannt gemacht habe. Soweit funktioniert dann auch alles...
Diese Buttons sind leider alle in Bereichen der Webseite, die ab und zu per AJAX neu geladen werden. Ist absolut grausam, aber leider habe ich keinen Einfluß auf den Quellcode der Seite. Meine Lösung im Moment ist, dass ich das onsubmit-Event einfach alle 10ms neu setze, um ja keinen Klick zu verpassen. Ist natürlich mehr als unschön...
Jetzt kann ich mir ja von der QWebPage den QNetworkAccessManager holen und auf das finished-Event warten. Das wird auch jedes Mal schön gefeuert, wenn ein Teil der Seite neu geladen wird, aber natürlich BEVOR es angezeigt wird. Das hilft mir also auch nur bedingt weiter, da ich an der Stelle ja auch keinen Einfluß mehr auf die Antwort des Servers habe, diese aber auch noch nicht auf der Webseite zu sehen ist.
Hat vielleicht einer von Euch eine Idee, wie ich dieses Problem sauber lösen könnte? Danke!
Gruss,
fallen