Come gestire un browser Web indietro e avanti la navigazione in un’app Wp7

Sto usando un browser web nella mia applicazione Windows Phone 7. Voglio solo sapere come gestire il suo back and forward navigation come qualsiasi altro browser desktop. E anche come bloccare una particolare navigazione.

Ho fatto riferimento qui e molti altri, ma non ho trovato nulla che funzioni per me. Per favore aiuto.

Per farlo funzionare come un browser desktop è ansible implementare uno stack .

Metterai due pulsanti avanti e indietro. Mentre l’utente naviga verso l’ URL successivo nel browser, li spinge nello stack della cronologia e quando vuole tornare indietro premendo il pulsante Indietro si passa al primo url nello stack della cronologia a livello di programmazione e lo si apre dalla pila della cronologia in modo che possa tornare indietro till stack contiene alcuni URL . Allo stesso modo per inoltrare si spingono gli URL nello stack in avanti mentre torna indietro e, ogni volta che preme il pulsante di avanzamento, si passa al primo elemento nello stack in avanti e lo si apre e così via finché non si lasciano gli url nello stack in avanti . Una volta che naviga in un url che non è navigato dallo stack in avanti da te, allora svuoti lo stack in avanti e lo riempi di nuovo quando torna indietro.

In questo modo puoi persino mostrare gli URL della cronologia in un elenco o come preferisci.

Informazioni sulla cancellazione della navigazione, ecco il codice dal link alla domanda nei commenti sotto la tua domanda, dovrebbe funzionare.

 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { //cancel navigation e.Cancel = true; } 

È ansible annullare la navigazione gestendo l’evento OnNavigating

 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { //cancel navigation e.Cancel = true; } 

Per tornare indietro, è ansible eseguire javascript sulla pagina.

 webBrowser.InvokeScript("eval","history.go(-1)"); 

e andare avanti:

 webBrowser.InvokeScript("eval","history.go(1)"); 

Se eval è bloccato sulla pagina, questo sito potrebbe essere utile per le alternative. Non dimenticare di impostare webBrowser.IsScriptEnabled su true .

La risposta precedente funzionerà, ma è ansible rendere ancora più semplice una soluzione praticabile, poiché il controllo WebBrowser ha uno stack di navigazione interno.

Aggiungi controlli di pulsante avanti e indietro all’interfaccia utente. Nella routine di azione per ognuno di essi:

 private void forwardButton_Click(object sender, System.Windows.RoutedEventArgs e) { WebBrowser editWB = sender as WebBrowser; if (editWB != null && editWB.CanGoForward) editWB.GoForward(); } 

È ansible ottenere più entusiasmo: nell’evento WebBrowser.LoadComplete (non l’evento FrameworkElement.Loaded ), è ansible testare .CanGoForward e .CanGoBack e abilitare o disabilitare i pulsanti in modo selettivo.

Ho provato a implementare l’idea proposta da BobHy ma non sono riuscito come nel mio WP7 / VS2010 Express non ho trovato il metodo CanGoForward per WebBrowser. Lo sto utilizzando all’interno di una canvas nel controllo utente che potrebbe influire sull’esperienza.

Tuttavia, ho trovato un esempio dettagliato diretto su http://developer.nokia.com/community/wiki/WebBrowser_Control_Techniques_in_Windows_Phone che implementa uno stack come suggerito da Parveen che funziona per me bene.