Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2014, 01:35   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию WebBrowser. Не выполняется javascript.

Здравствуйте уважаемые программисты, зашел в тупик...
Вообщем, перейду сразу к проблеме. Если перейти в браузере обычном IE или Chrome и т.д https://www.partslink24.com/pl24-par...parts/model.do данный сайт нормально открывается, но в компоненте webBrowser по navigate почему-то не работает и перенаправляется на главную страницу, такое ощущение как будто он не может скушать файлы яваскрипта.
Если кто сталкивался с подобным, в частности с проблемами js на WebBrowser, подскажите куда дальше копать.
п.с. Пишу на WPF.
coNsept вне форума Ответить с цитированием
Старый 29.04.2014, 07:23   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а взятие последней версии ie в приложение прописано?(в реестр)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.04.2014, 11:48   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Да, версию поставил новую, проблема вот в чем.

Код:
  var thread = new Thread(() =>
    {
     var webBrowser = new WebBrowser()
      {
       ScrollBarsEnabled = false,
       ScriptErrorsSuppressed = true
      };

     webBrowser.Navigate("https://www.partslink24.com/pl24-parts/fiat/parts/start.do?service=alfa_parts");

     var ver =  webBrowser.Version;

     while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
     {
      System.Windows.Forms.Application.DoEvents();
     }

     if (webBrowser.Document != null)
     {
      var z = webBrowser.DocumentText;
     }
    });

   thread.SetApartmentState(ApartmentState.STA);

   thread.Start();
Если я пытаюсь загрузить страницу таким методом, в результате мне сайт отдает ошибку мол
Цитата:
Чтобы сайт полностью отображался у Вас на экране, Вам нужно активировать в Вашем браузере JavaScript и установить Adobe Flash Player.
Естественно, у меня все включено, но в итоге в исходном код html страницы не загружаются все javascript.
coNsept вне форума Ответить с цитированием
Старый 29.04.2014, 12:16   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну так вы так не делайте, вопрос то в чем?
eval вне форума Ответить с цитированием
Старый 29.04.2014, 13:19   #5
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Я ночь не спал, уже даже толком вопрос поставить не могу...
Вообщем постараюсь объяснить суть моей проблемы.
Если в компоненте WebBrowser в navigate указать прямую ссылку, например вот эту: https://www.partslink24.com/partslin...ice=alfa_parts
То я пройду по этой ссылке без каких либо проблем и перейду в каталог альфа-рмео в моем случае.
Но проблема в другом, я оформляю запрос через прокси, отсылаю запрос с url на сервер, там происходит переход и получение html страницы, методом который я описал выше и обратно возвращается на клиент страница.
Но метод который я описал выше почему-то не дает возможности перейти в каталог как обычный navigate("url") и мне приходит с сервера оповещение "мол включите JS" но JS в IE у меня включен.
Просто если кому не сложно, попробуйте выполнить следующий код.

Код:
  var thread = new Thread(() =>
    {
     var webBrowser = new WebBrowser()
      {
       ScrollBarsEnabled = false,
       ScriptErrorsSuppressed = true
      };

     webBrowser.Navigate("https://www.partslink24.com/partslink24/launchCatalog.do?service=alfa_parts");

     var ver =  webBrowser.Version;

     while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
     {
      System.Windows.Forms.Application.DoEvents();
     }

     if (webBrowser.Document != null)
     {
      var z = webBrowser.DocumentText;
     }
    });

   thread.SetApartmentState(ApartmentState.STA);

   thread.Start()
coNsept вне форума Ответить с цитированием
Старый 29.04.2014, 13:24   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

не надо ничего выполнять... сейчас понятие Complete практически выраждено

вот вам псевдосценарий страницы
страница имеет пустое боди
в скриптовом лоадед прописано аджаксовая загрузка остального контента

а теперь помидетируйте, что у вас будет в webBrowser.DocumentText..

правильно фик да нифика, а браузер погодя покажет все как надо

Последний раз редактировалось eval; 29.04.2014 в 13:28.
eval вне форума Ответить с цитированием
Старый 29.04.2014, 13:41   #7
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Вы правильно рассуждаете, но как решить данную проблему?

Я придумал решение, не могу сказать на сколько оно правильное и будет ли вообще работать, вот буквально на минуте буду тестировать, а решение это возвращать авторизированные куки и передавать их в клиентский браузер и переходить по navigate.

п.с. А в документе вы правы, фиг да нифига...

Последний раз редактировалось coNsept; 29.04.2014 в 13:44.
coNsept вне форума Ответить с цитированием
Старый 29.04.2014, 13:48   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
но как решить данную проблему?
я не вижу никакой проблемы
eval вне форума Ответить с цитированием
Старый 29.04.2014, 13:59   #9
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Для вас по всей видимости, это не является проблемой так как вы понимаете процесс происходящего, я пока не совсем.
Для меня проблема существует, по navigate я могу пройти по странице и в компоненте вижу отображение того что мне нужно, а вот документ webBrowser.DocumentText возвращает мне совсем не то. Если Вам будет не сложно, объясните более подробно что нужно сделать чтобы я в DocumentText увидел то что отображается.

п.с. Получить содержимое страницы мне нужно для того чтобы мой прокси сервер отсылал на клиент уже готовую html а клиент в свою очередь ее отображал методом NavigateToString но как вы уже поняли у меня путного нет в DocumentText.

Последний раз редактировалось coNsept; 29.04.2014 в 14:09.
coNsept вне форума Ответить с цитированием
Старый 29.04.2014, 14:10   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от coNsept Посмотреть сообщение
Для вас по всей видимости, это не является проблемой так как вы понимаете процесс происходящего, я пока не совсем.
Для меня проблема существует, по navigate я могу пройти по странице и в компоненте вижу отображение того что мне нужно, а вот документ webBrowser.DocumentText возвращает мне совсем не то. Если Вам будет не сложно, объясните более подробно что нужно сделать чтобы я в DocumentText увидел то что отображается.

п.с. Получить содержимое страницы мне нужно для того чтобы мой прокси сервер отсылал на клиент уже готовую html а клиент в свою очередь ее отображал методом NavigateToString но как вы уже поняли у меня путного нет в DocumentText.
так вы прокси пишете или клиента?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
javascript формы в WebBrowser Witaliy Общие вопросы Delphi 5 16.07.2012 20:32
Диалоговые окна JavaScript в WebBrowser TzX Работа с сетью в Delphi 0 25.08.2011 13:40
WebBrowser Как нажать кнопку если используется JavaScript? M-UNIT Работа с сетью в Delphi 0 08.09.2010 12:54
Webbrowser поддержка javascript-ов tsergey Компоненты Delphi 1 25.05.2009 09:34