2013-01-03 1 views
2

브라우저 기록에서 쿠키 및 히스토리에 액세스하는 방법은 무엇입니까? 현재 세션의 모든 사이트를 추가하는 목록 상자를 사용하고 있지만 신뢰할 수없고 뒤로 버튼과 작동하지 않습니다. .브라우저 기록의 액세스 기록 및 기타 내용

Windows phone에는 뒤로 버튼 코드가 ​​있습니까? GoBack();이 작동하지 않습니다.

답변

3

웹 브라우저 컨트롤에서 탐색 한 페이지를 응용 프로그램의 기록 스택에 추가하여 사용자가 휴대 전화의 뒤로 버튼을 사용하여 뒤로 이동할 수 있습니다.

here에서 찾을 수있는이 문제에 대한 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에 탐색 스택이 있으면 backkeypress를 취소하고 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; 
     } 
    } 
} 

아직 제대로 구현되지 않은 몇 가지 가장자리 사례가 있습니다.

코드에서 알 수 있듯이 코드는 간단하지만 해결되지 않은 문제가 있습니다. 다음의 차이점을 알 수 없습니다.

  • (a) -> 탐색 (b) -> 뒤로();
  • 탐색 (a) -> 탐색 (b) -> 탐색 (a);
    • 는 모든 앱이 통합이 필요합니다

    결론을하려면, 여기를 요약 한 것입니다. 단일 페이지 만 표시하고 탐색을 권장하지 않으려면 UI가 일시적이라는 사용자에게 암시하는 UX 패턴을 사용하십시오. 팝업처럼 보이게 만들고 팝업에 닫기 버튼을 넣으십시오. '

  • 브라우저에서 탐색을 권장하는 앱을 가지고 있다면 위의 패턴을 고려하십시오. 인증 요구 사항 때문에 사용자가 직관적이어서하지 마십시오. 그것이 요구 사항이 존재하는 이유입니다.
  • 앱이 위에 해당하지 않는다고 생각되면 인증 팀에 예외를 요청하십시오. 즉, 사용자를 위해 직관적 인 경험을 창출해야한다고 강조합니다. 나는 두 가지 옵션이 최선을 다해서 추천하기 때문에 변명/예외 노선에 반대한다고 생각합니다.

나는 이것으로 뭔가를 할 수 있기를 바랍니다.

"에

+0

(블로그 및 코드 나는 단지 그가 쓴의 다이제스트를 게시하고 쓴 제이미로드 리 게스에 대한 모든 크레딧..) 열린 우리당 대상 = history.Peek(); web.Navigate (대상) ; e.Cancel = true; " ----- 빨간색은 "Peek();"에 밑줄을 긋습니다. 사전에없는 것을 말합니다 – Ravi

+0

좋아, Visual Studio를 사용하여 컴퓨터에 액세스하자 마자 보겠습니다. – Styxxy

+0

픽은 Stack 클래스의 유효한 메서드입니다 (http://msdn.microsoft.com/en-us/library/1w32446f.aspx). – Styxxy