2011-10-24 4 views
1

페이지에 뒤로 및 앞으로 단추를 추가하려는 WebBrowser 요소가 있으며, 앞으로 아무 것도 돌아 가지 않을 때 해당 단추가 비활성화됩니다. 에. 코코아에서 WebBrowser 컨트롤을위한 뒤로 및 앞으로 단추 추가하기

는있는 UIWebView 쉽게 그 확인하는 방법이 있습니다 canGoBack 및 canGoForward을, 당신은 GoBack을하고 goForward 방법을 사용할 수

안드로이드는을 달성하기위한 동일한 메소드 이름을 가지고 (.. 다시로드 등과 함께) 같은.

그 방법은 .NET 4 및 3.5 SP1에서 사용할 수 있습니다. ,

나는 실버 라이트에서 자바 스크립트 명령을 사용하는 방법에 대한 몇 가지 참조를 발견했습니다하지만 난이 매우 성가신 찾을 플러스 역사에서 아무것도 (물론 나는이 자신을 관리하지 않는 한)

확실히이 있는지 감지 할 수있는 방법이 없습니다

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는 웹 브라우저의 요소에 대해 true로 설정 필요와 함께 :이 같은 일을하고있는 자바 스크립트 솔루션에 관해서

답변

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

.. 윈도우 폰에서 조금 더 진보 된 무언가가있다. 그러나이 경우 항상 오류 80020006이 발생합니다. DOCTYPE이 컨텐트가로드 된 후 캐싱되거나 캐싱되는 시스템 또는 IsScriptEnabled가 될 수있는 방법에 대한 다양한 게시물을 읽었습니다 ... 단지 성공하지 못했습니다 ...

2

웹 브라우저가있는 내 앱 중 하나에서 페이지의 애플리케이션 표시 줄에 뒤로 버튼이 추가되었습니다. 앱 막대에서 뒤로 버튼을 사용하여 웹 페이지 탐색을 뒤로하고 하드웨어 백 버튼을 사용하여 이전 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

더 많은 가능성이 내가 그것을해야 할 것입니다 방법 ...을 웹 브라우저 UIElement에 너무 제한 것입니다 :( – jyavenard

관련 문제