2011-10-24 23 views
1

ページにWebBrowser要素があり、そこに戻るボタンと進むボタンを追加して、何も進んでいないときにこれらのボタンを無効にしますに。ココアで WebBrowserコントロール用の戻るボタンと進むボタンを追加する

は、のUIWebViewは簡単にことを確認する方法があります:canGoBackとcanGoForwardを、あなたはGOBACKとgoForwardメソッドを持っている利用可能

のAndroidは、達成するためのまったく同じメソッド名を持つ(..リロードなどと一緒に)同じ。

これらのメソッドは、.NET 4および3.5 SP1で使用できます。

私はSilverlightでJavaScriptのコマンドを使用する方法についていくつかの参照を見つけたが、私は、これは非常に面倒見つけ、プラス(もちろん、私はこれを自分で管理していない限り)歴史の中で何があるかどうかを検出する方法はありません

確かに、

private void backButton_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      webView.InvokeScript("eval", "history.go(-1);"); 
     } 
     catch 
     { 
      // Eat error 
     } 

    } 

    private void forwardButton_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      webView.InvokeScript("eval", "history.go(1);"); 
     } 
     catch 
     { 
      // Eat error 
     } 
    } 

IsScriptingEnabledは、Webブラウザー要素をtrueに設定持つ:それはこのような何かをやっているjavascriptのソリューションに関しては

答えて

7

ここで私はそれをやった方法です。

これは、backButtonforwardButtonを設定したことを前提としています。これらのボタンのステータスは、ナビゲーションスタックのどこに応じて更新されます。

webViewWebBrowserオブジェクト

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; 
} 
0

... Windowsの携帯電話では少し、より高度なものがあります。 しかし、これは常にエラー80020006の例外を生成します。私は、DOCTYPEがコンテンツのロード後にシステムキャッシュまたはIsScriptEnabledが設定されている原因についてDOCTYPEがどのように影響しているのかを読んでいます...

2

ウェブブラウザを含む私のアプリケーションの1つのページのアプリケーションバーに戻るボタンが追加されています。私は、アプリケーションバーの戻るボタンでWebページのナビゲーションを後ろにして、ハードウェアの戻るボタンを前のxamlページに移動させたいと思っていました。このようにして、ユーザは、以前のxamlページに戻るために、ウェブブラウザ内のすべての訪問済みウェブページを逆方向にナビゲートするためにハードウェア戻るボタンを使用する必要はない。ここで私がやったやり方は、フォワードスタックを簡単に設定することができ、ユーザーがバック(appbar)ボタンをクリックすると、そのスタックからページがポップされ、フォワードスタックにプッシュされます。

 private void NavigateWeb() 
     { 
       if (!loaded) 
       { 
        NavigationStack.Clear(); 
        try 
        { 
          Web.Source = new Uri("http://m.weightwatchers.com/"); 
          loaded = true; 
        } 
        catch (Exception ex) 
        { 
          MessageBox.Show("Unable to navigate to page.\n" + ex.Message, 
           "Error", MessageBoxButton.OK); 
        } 
       } 
     } 

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


     void btnBack_Click(object sender, EventArgs e) 
     { 
       if (NavigationStack.Count > 2) 
       { 
        // 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 
        Web.Navigate(NavigationStack.Pop()); 
       } 
     } 

私はNavigationStack.Count> 2をチェックした理由は、私はウェブブラウザで表示しています特定のウェブページには、常に最初のページにリンクを「続けるにはこちらをクリックして」、なしがあるから始まるということですそこに戻る理由。これはあなたのウェブブラウザに他人のサイトを表示することの没落です - あなたは何が表示されているかを制御できません。

+0

より多くの可能性が高いことが、私はそれをしなければならないだろうかだが... WebBrowserコントロールのUIElementはそのように限定されているようだです:( – jyavenard

関連する問題