我在页面中有一个 WebBrowser 元素,我想在其中添加一个后退和前进按钮,并在没有什么可以返回和没有什么可以前进时禁用这些按钮。
在 Cocoa 中,UIWebView 具有轻松检查的方法:canGoBack 和 canGoForward,并且您有可用的 goBack 和 goForward 方法(以及 reload 等)
Android 具有完全相同的方法名称来实现相同的目标。
我看到这些方法在 .Net 4 和 3.5 SP1 中可用。
我找到了一些关于在 Silverlight 中使用 javascript 命令的引用资料,但我发现这非常麻烦,而且无法检测历史记录中是否有任何内容(当然,除非我自己管理)
当然,Windows Phone 中有一些更高级的东西..
请您参考如下方法:
这就是我最终如何做到的。
这假设您设置了 backButton和 forwardButton ;这些按钮的状态将根据您在导航堆栈中的位置进行相应更新。webView是 WebBrowser目的
List<Uri> HistoryStack;
int HistoryStack_Index;
bool fromHistory;
// Constructor
public HelpView()
{
InitializeComponent();
HistoryStack = new List<Uri>();
HistoryStack_Index = 0;
fromHistory = false;
webView.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(WebView_Navigated);
UpdateNavButtons();
}
private void backButton_Click(object sender, RoutedEventArgs e)
{
if (HistoryStack_Index > 1)
{
HistoryStack_Index--;
fromHistory = true;
webView.Navigate(HistoryStack[HistoryStack_Index-1]);
updateNavButtons();
}
}
private void forwardButton_Click(object sender, RoutedEventArgs e)
{
if (HistoryStack_Index < HistoryStack.Count)
{
HistoryStack_Index++;
fromHistory = true;
webView.Navigate(HistoryStack[HistoryStack_Index-1]);
UpdateNavButtons();
}
}
private void UpdateNavButtons()
{
this.backButton.IsEnabled = HistoryStack_Index > 1;
this.forwardButton.IsEnabled = HistoryStack_Index < HistoryStack.Count;
}
private void WebView_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
if (!fromHistory)
{
if (HistoryStack_Index < HistoryStack.Count)
{
HistoryStack.RemoveRange(HistoryStack_Index, HistoryStack.Count - HistoryStack_Index);
}
HistoryStack.Add(e.Uri);
HistoryStack_Index++;
UpdateNavButtons();
}
fromHistory = false;
}
