如何在Wp7应用程序中处理Web浏览器前后导航

我在Windows Phone 7应用程序中使用Web浏览器。 我只是想知道如何像任何桌面浏览器一样处理其后退和前进导航。 以及如何阻止特定的导航。

我在这里和其他许多人提到但是找不到任何适合我的东西。 请帮忙。

要使其像桌面浏览器一样工作,您可以实现stack

你会前后放两个按钮。 当用户导航到浏览器中的下一个URL时 ,您将它们推入历史堆栈 ,当他想通过按下后退按钮返回时,您将以编程方式导航到历史堆栈中的第一个URL并从历史堆栈中弹出以便他可以导航回来直到堆栈中有一些URL 。 类似地,对于转发,您在向后导航时将URL推送到前向堆栈 ,并且每当他按下前进按钮时,您导航到前向堆栈中的第一个元素并弹出它,依此类推,直到您将URL保留在前向堆栈中 。 一旦他导航到你没有从前向堆栈导航的某个url,你就会清空前向筹码并在他向后移动时再次填充它。

这样,您甚至可以在列表中显示历史记录url,也可以随意显示。

关于导航取消,这里是你问题评论中链接到问题的代码,它应该有效。

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

您可以通过处理OnNavigating事件来取消导航

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

要返回,您可以在页面上执行javascript。

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

继续前进:

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

如果页面上的eval被阻止,则此站点可能对替代方案有用。 不要忘记将webBrowser.IsScriptEnabled设置为true

以前的答案可行,但您可以使一个可行的解决方案更简单,因为WebBrowser控件具有内部导航堆栈。

向UI添加前进和后退按钮控件。 在每个人的行动例程中:

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

你可以得到更好的:在WebBrowser.LoadComplete事件(不是FrameworkElement.Loaded事件)中,你可以测试.CanGoForward和.CanGoBack并有选择地启用或禁用按钮。

我试图实现BobHy提出的想法,但是在我的WP7 / VS2010 Express中失败了我没有找到WebBrowser的方法CanGoForward。 我在用户控件的canvas中使用它可能会影响体验。

但是,我在http://developer.nokia.com/community/wiki/WebBrowser_Control_Techniques_in_Windows_Phone上找到了一个直接的详细示例,实现了Parveen建议的堆栈,这对我很有用。