在当前使用从会话中添加每个站点的列表框时,我将如何从浏览器控件访问历史记录和 cookie,但它不是很可靠并且不能与后退按钮一起使用。
windows phone 上是否还有返回按钮的代码?GoBack();
不起作用。
在当前使用从会话中添加每个站点的列表框时,我将如何从浏览器控件访问历史记录和 cookie,但它不是很可靠并且不能与后退按钮一起使用。
windows phone 上是否还有返回按钮的代码?GoBack();
不起作用。
您可以将您在 webbrowser 控件中导航的页面添加到应用程序的历史堆栈中,以便用户可以使用手机的后退按钮进行导航。
我在 MSDN 博客上发现了一篇关于这个问题的非常有趣的文章,可以在这里找到。我将发布一小部分代码作为备注。
1) 监听 WebBrowser.Navigated 事件;跟踪已访问的页面。
Stack<Uri> history= new Stack<Uri>();
Uri current = null;
private void WebBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
Uri previous = null;
if (history.Count > 0)
previous = history.Peek();
// This assumption is NOT always right.
// if the page had a forward reference that creates a loop (e.g. A->B->A ),
// we would not detect it, we assume it is an A -> B -> back ()
if (e.Uri == previous)
{
history.Pop();
}
else
{
if (current != null)
history.Push(current);
}
current = e.Uri;
}
2) 收听页面上的 OnBackKeyPress。如果 WebBrowser 有导航堆栈,请取消后退键并在 webbrowser 控件的堆栈中导航。
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
base.OnBackKeyPress(e);
if (!isPerformingCloseOperation)
{
if (history.Count > 0)
{
Uri destination = history.Peek();
webBrowser.Navigate(destination);
// What about using script and going history.back?
// you can do it, but
// I rather use that to keep ‘track’ consistently with our stack
e.Cancel = true;
}
}
}
请注意,仍然有一些边缘情况没有很好地实现。
如您所见,代码是微不足道的,但它有一个未解决的问题。它无法区分:
最后,总结一下:
我希望你能用这个做点什么。
(完全归功于编写博客和代码的 Jaime Rodriguez。我只是发布他所写内容的摘要。)