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

时间:2013-12-20 13:45:23

标签: c# windows-phone-7 windows-phone-8

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

我提到了here和其他许多人,但找不到任何对我有用的东西。 请帮忙。

4 个答案:

答案 0 :(得分:8)

您可以通过处理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)");

如果页面上屏蔽evalthis site可能对替代品有用。不要忘记将webBrowser.IsScriptEnabled设置为true

答案 1 :(得分:3)

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

您将前后放两个按钮。当用户在浏览器中导航到下一个 URL 时,您将其推入历史记录堆栈,当他想通过按返回按钮返回时,您将导航到历史记录堆栈中的第一个网址以编程方式从历史堆栈中弹出,以便他可以导航回到堆栈中包含一些 URL 。类似地,对于转发,您将转发推入转发堆栈,当他向后导航时,无论何时按下转发按钮,您都会导航到转发堆栈中的第一个元素,弹出它等等,直到你有前进堆栈中的网址。一旦他导航到你没有从前进堆栈导航的某个网址,你就会清空前向筹码并在他后退时再次填充。

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

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

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

}

答案 2 :(得分:0)

以前的答案可行,但您可以使一个可行的解决方案更简单,因为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并选择性地启用或禁用这些按钮。

答案 3 :(得分:0)

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

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