WebBrowser-Historie löschen und abfragen, ob etwas gepostet wurde
-
Ich habe zwei Fragen zum WebBrowser-Control:
1. Man kann ihn, wenn man auf einer Seite ist, ja wieder zurück- und vor-navigieren, wie bei einem normalen Browser. Kann ich aber auch zu ihm sagen: "So, ab jetzt lösch bitte deinen vorherigen Verlauf, so dass der Benutzer, wenn er zurückgehen will, nur noch bis hier her kommt, wo du jetzt stehst"?
Beispiel: Der Benutzer geht auf Seite A, B, C und D. Dann kann der Browser ja zurücknavigieren über C, B, A und auch wieder nach vorne. Ich will dem Browser jetzt aber, wenn er auf D steht, anweisen: "Hier ist jetzt dein neuer Anfangspunkt. Weiter zurück geht's nicht mehr." Das heißt, wenn der Benutzer nun auf Seite E, F, G, H geht, soll er nur noch bis zu D zurücklaufen können, aber durch GoBack() nicht mehr C, B oder A erreichen. Wie mache ich das, dass ich das CanGoBack auf einen bestimmten Punkt als false festlege?2. Kann man irgendwie abfragen, ob die Seite gewechselt wurde, indem ein Button geklickt wurde? Ich brauche entweder in der Funktion Navigating oder in Navigated irgendeine Unterscheidungsmöglichkeit, ob die neue Seite durch einen einfachen Klick bzw. durch simple URL-Eingabe zustandegekommen ist oder ob ein Button geklickt und Daten gepostet wurden.
-
Saifed the best schrieb:
Ich habe zwei Fragen zum WebBrowser-Control:
Ich gehe mal davon aus, dass du den WebBrowser aus den WinForms meinst.
Saifed the best schrieb:
1. Man kann ihn, wenn man auf einer Seite ist, ja wieder zurück- und vor-navigieren, wie bei einem normalen Browser. Kann ich aber auch zu ihm sagen: "So, ab jetzt lösch bitte deinen vorherigen Verlauf, so dass der Benutzer, wenn er zurückgehen will, nur noch bis hier her kommt, wo du jetzt stehst"?
Beispiel: Der Benutzer geht auf Seite A, B, C und D. Dann kann der Browser ja zurücknavigieren über C, B, A und auch wieder nach vorne. Ich will dem Browser jetzt aber, wenn er auf D steht, anweisen: "Hier ist jetzt dein neuer Anfangspunkt. Weiter zurück geht's nicht mehr." Das heißt, wenn der Benutzer nun auf Seite E, F, G, H geht, soll er nur noch bis zu D zurücklaufen können, aber durch GoBack() nicht mehr C, B oder A erreichen. Wie mache ich das, dass ich das CanGoBack auf einen bestimmten Punkt als false festlege?Ist das nicht irgendwie ein ziemlich schlechtes Verhalten für den Benutzer? Ich hätte sowas jedenfalls nicht gerne. Aber theoretisch könntest du vielleicht damit was erreichen:
http://msdn.microsoft.com/en-us/library/k6232xsx.aspxNeues Fenster, neue Vergangenheit.
Saifed the best schrieb:
2. Kann man irgendwie abfragen, ob die Seite gewechselt wurde, indem ein Button geklickt wurde? Ich brauche entweder in der Funktion Navigating oder in Navigated irgendeine Unterscheidungsmöglichkeit, ob die neue Seite durch einen einfachen Klick bzw. durch simple URL-Eingabe zustandegekommen ist oder ob ein Button geklickt und Daten gepostet wurden.
Was verstehst du unter "Button geklickt"? Ist der Button von dir? Wieso setzt du dann nicht ein Flag?
Grüssli
-
Dravere schrieb:
Ist das nicht irgendwie ein ziemlich schlechtes Verhalten für den Benutzer? Ich hätte sowas jedenfalls nicht gerne.
Naja, das ist vom Auftraggeber so gewünscht. Sinn und Zweck ist, dass wenn einmal Daten abgeschickt wurden, man nicht zurück und wieder nach vorne navigieren kann, denn dann kommt ja diese Meldung "Seite nicht mehr gültig." Und das soll eben unterbeunden werden, indem man nach dem Posten von irgendwelchen Sachen von da an nicht mehr zurücknavigieren kann, um nicht zweimal an dieselbe Stelle mit dem Post zu kommen.
Dravere schrieb:
Aber theoretisch könntest du vielleicht damit was erreichen:
http://msdn.microsoft.com/en-us/library/k6232xsx.aspxNeues Fenster, neue Vergangenheit.
Aber dann geht wirklich ein neues Fenster auf.
Dravere schrieb:
Was verstehst du unter "Button geklickt"? Ist der Button von dir? Wieso setzt du dann nicht ein Flag?
Nein, der Button ist nicht von mir. Was ich meine ist: Wenn die Seite einfach nur gewechselt wurde durch klick auf einen Link oder durch Eingeben der Adresse, dann ist das die eine Sache. Wenn aber jemand auf einen Button geklickt hat und somit Daten übertragen wurden (das, was in PHP in der _POST-Variable gespeichert wird), dann ist das was anderes. Und ich will nun gucken, ob das passiert ist, ob jemand Daten per POST übertragen hat, statt einfach nur ganz normal eine Seite zu wechseln.
-
Ganz allgemein: Da bin ich etwas überfragt.
Saifed the best schrieb:
Naja, das ist vom Auftraggeber so gewünscht. Sinn und Zweck ist, dass wenn einmal Daten abgeschickt wurden, man nicht zurück und wieder nach vorne navigieren kann, denn dann kommt ja diese Meldung "Seite nicht mehr gültig." Und das soll eben unterbeunden werden, indem man nach dem Posten von irgendwelchen Sachen von da an nicht mehr zurücknavigieren kann, um nicht zweimal an dieselbe Stelle mit dem Post zu kommen.
Hier könnte ich mir vielleicht noch Vorstellen, etwas über Interop zu erreichen. Das WebBrowser Control bei Windows Forms wrappt schliesslich nur IWebBrowser2 aus der WinAPI. Und in diesem COM Bereich gibt es eine Möglichkeit für die Manipulation der History. Mit
IUrlHistoryStg
kann man einClearHistory
ausführen.
http://msdn.microsoft.com/en-us/library/aa752042.aspxWie man das genau Zusammenknüpft müsstest du aber noch selber rausfinden.
Saifed the best schrieb:
Nein, der Button ist nicht von mir. Was ich meine ist: Wenn die Seite einfach nur gewechselt wurde durch klick auf einen Link oder durch Eingeben der Adresse, dann ist das die eine Sache. Wenn aber jemand auf einen Button geklickt hat und somit Daten übertragen wurden (das, was in PHP in der _POST-Variable gespeichert wird), dann ist das was anderes. Und ich will nun gucken, ob das passiert ist, ob jemand Daten per POST übertragen hat, statt einfach nur ganz normal eine Seite zu wechseln.
Da bin ich dann aber völlig überfragt. Über COM käme man noch an ein paar zusätzliche Informationen beim
Navigating
Event.DWebBrowserEvents2::BeforeNavigate2
hat zum Beispiel auch Informationen über POST-Daten. Daher könnte man vielleicht dies so abfangen. Wäre aber nicht gerade schön.Mehr fällt mir dazu leider nicht ein.
Grüssli