none
.Net компонент WebBrowser как получить доступ к журналу переходов? RRS feed

  • Вопрос

  • При переходе между страницами IE сохраняет переходы в журнал, где хранятся "ключевые" переходы. Вот к нему бы я и хотел получить доступ. Если же обрабатывать Navigated, то вылетает еще куча переадресаций и вызовов скриптов.
    25 ноября 2011 г. 12:31

Ответы

  • > Собираем отдельно переходы с Navigating и Navigated [...] В журнале IE будет всего один ...
       
     

    перехватывать надо DocumentCompleted и смотреть на ReadyState:  

    var wb = new WebBrowser { Parent = this, Dock = DockStyle.Fill, };
    wb.DocumentCompleted += (s, e) => 
    {
       if(wb.ReadyState == WebBrowserReadyState.Complete)
       {
           // e.Url ...
       }
    };
    
      
       

    • Изменено Malobukv 28 ноября 2011 г. 15:48
    • Помечено в качестве ответа PhantomSL 28 ноября 2011 г. 16:01
    28 ноября 2011 г. 15:46

Все ответы

  • У многих компонентов есть по два события названия которых отличаются лишь окончанием. Так, например, есть  Navigated, а есть  Navigating.

    Я вот давно программирую но все равно бывает путаю, поэтому лучше где то записать. Итак:

    ...ed - происходит до

    ...ing - происходит после

    Соответственно в вашем случае событие  Navigated происходит при начале перехода и выдаст много чего, а окончательный результат куда вы перешли будет в Navigating. Вот там то и нужно вести журнал, а готового свойства со списком переходов к сожалению в компоненте нет.


    Влюблен в WPF
    26 ноября 2011 г. 8:52
    Отвечающий
  • > ...ed - происходит до     ...ing - происходит после

     

    Navigating - в процессе перехода; можно остановить.
    Navigated - переход завершен.

     

    26 ноября 2011 г. 10:36
  • Простой пример:

    1. Заходим на ya.ru
    2. Собираем отдельно переходы с Navigating и Navigated

    Navigating:

    Navigating: http://kiks.yandex.ru/su/
    Navigating: http://suggest.yandex.ru/jquery-1-4-2.crossframeajax.html
    Navigating: javascript:'%3Cbody%20style=%5C'background:none;overflow:hidden%5C'%3E'

    Navigated:

    Navigated: http://ya.ru/
    Navigated: http://kiks.yandex.ru/system/fc06.html
    Navigated: javascript:'%3Cbody%20style=%5C'background:none;overflow:hidden%5C'%3E'
    Navigated: http://suggest.yandex.ru/jquery-1-4-2.crossframeajax.html

    В журнале IE будет всего один http://ya.ru/

    28 ноября 2011 г. 15:22
  • > Собираем отдельно переходы с Navigating и Navigated [...] В журнале IE будет всего один ...
       
     

    перехватывать надо DocumentCompleted и смотреть на ReadyState:  

    var wb = new WebBrowser { Parent = this, Dock = DockStyle.Fill, };
    wb.DocumentCompleted += (s, e) => 
    {
       if(wb.ReadyState == WebBrowserReadyState.Complete)
       {
           // e.Url ...
       }
    };
    
      
       

    • Изменено Malobukv 28 ноября 2011 г. 15:48
    • Помечено в качестве ответа PhantomSL 28 ноября 2011 г. 16:01
    28 ноября 2011 г. 15:46
  • > IE сохраняет переходы в журнал, где хранятся "ключевые" переходы. Вот к нему бы я и хотел получить доступ.


    см. The Tiny Wrapper Class for URL History Interface in C#
     
    28 ноября 2011 г. 15:56
  • На данный момент у меня приблизительно так и делается, хотя бывают и приколы получения нескольких WebBrowserReadyState.Complete, наверное из-за автоматических переадресаций
    28 ноября 2011 г. 16:01
  • Случайно наткнулся на еще один объект WebBrowser.Document.Window.History, который скорее всего и является оберткой над IE журналом.

    Но он предоставляем все методы кроме необходимого:) Можно передвигаться вперед/назад по списку, переходить на элемент по индексу и даже получить их количество, но вот что там находится это черный ящик:) Может кто-то, когда-то и сможет подобрать подходящий интерфейс, но это буду не я.


    • Изменено PhantomSL 2 декабря 2011 г. 8:21 Орфография
    2 декабря 2011 г. 8:19
  • > объект WebBrowser.Document.Window.History, который скорее всего и является оберткой над IE журналом

       
    история переходов недоступна из кода для обеспечения приватности.
    но есть отдельный интерфейс IUrlHistory (пример использования есть выше по ссылке)

      

    2 декабря 2011 г. 9:04