Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
818 views
in Technique[技术] by (71.8m points)

.net - Handling hardware back button and sending it to WebBrowser control running on Windows Phone

I have a web browser control embedded into a PhoneApplicationPage. I have to handle the hardware back button and force the web browser to go back.

I know how to handle hardware back button.

How do you force the webbrowser to go to a previous page? The seemingly simple GoBack() and CanGoBack property on WinForms webbrowser seems to be missing on Windows Phone.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I've just handled this same question inside Overflow7

I decided to handle this in C# rather than in Javascript. Basically, in my page I've added a stack of Uri's:

    private Stack<Uri> NavigationStack = new Stack<Uri>();

then I've intercepted the Navigated event of the web browser:

    void TheWebBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        NavigationStack.Push(e.Uri);
    }

then in the back key press override I try to navigate using the back button if I can:

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        if (NavigationStack.Count > 1)
        {
            // get rid of the topmost item...
            NavigationStack.Pop();
            // now navigate to the next topmost item
            // note that this is another Pop - as when the navigate occurs a Push() will happen
            TheWebBrowser.Navigate(NavigationStack.Pop());
            e.Cancel = true;
            return;
        }

        base.OnBackKeyPress(e);
    }

Note that this solution doesn't work perfectly with tombstoning - nor with "ajax" sites - but overall it seems to work pretty well.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...