none
c# InvokeMember и GeckoWebBrowser нажатие на ссылку RRS feed

  • Вопрос

  • Здравствуйте!

    Решил попробовать заменить стандартный компонент WebBrowser на GeckoWebBrowser. Все вроде ничего, но столкнулся с такой проблемой:

    нужно реализовать программно переход по ссылке, в WebBrowser делаю так:

    HtmlElementCollection a_tag = webBrowser1.Document.GetElementsByTagName("a");
    HtmlElement fff = webBrowser1.Document.GetElementsByTagName
      foreach (GeckoElement he in a_tag)
      {
             if (he.GetAttribute("href")=="site.my/some/link/to/)
             he.InvokeMember("click");
      }

    пробую скриптом, но в этом не силен )

    webBrowser1.Navigate("javascript:void( var a_tag=Document.GetElementsByTagName('href');for (i=0;i<a_tag.length;i++){if(a_tag[i].getAttribute('href')=='site.my/some/link/to/') a_tag[i].click()})");
    может кто-то работал с Gecko и подскажет как выйти из положения?

    3 июля 2012 г. 14:21

Ответы

  • Помоему проблема в void(), попробуйте без него, например следующий код выводи все ссылки на странице:

    javascript:tags=document.getElementsByTagName('a');for(i=0;i<tags.length;i++){alert(tags[i].getAttribute('href'));}


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 14 августа 2012 г. 6:23
    11 июля 2012 г. 9:42

Все ответы

  • А в чем именно проблема, в том что реализация через javascript не работает? 1ый метод работает и чем-то не устраивает вас? Почему бы просто не перейти на нужный сайт по прямому адресу, а нужную javascript функцию вызвать (если она должна вызываться при клике) через WebBrowser.InvokeScript


    Для связи [mail]

  • 1-й метод для компонента Windows.Form.WebBrowser, да работает, но я перешел на GeckoWebBrowser, на движке Firefox 3, вот в нем нету InvokeMember, и в интернете нашел что можно заменить на скрипт, но чето не работает...

    Почему бы просто не перейти на нужный сайт по прямому адресу

    потому что адрес меняется :)

  • Привет.

    Если проблема у вас еще актуальна, то у вас ошибка в javascript:

    webBrowser1.Navigate("javascript:void( var a_tag=Document.GetElementsByTagName('href');for (i=0;i<a_tag.length;i++){if(a_tag[i].getAttribute('href')=='site.my/some/link/to/') a_tag[i].click()})");

    При сборе элементов ссылок getElementsByTagName - нет такого тега href, тег ссылки это a, т.е. вам нужно вызывать:

    document.getElementsByTagName("a");


    Для связи [mail]

    • Предложено в качестве ответа YatajgaEditor 10 июля 2012 г. 5:11
    6 июля 2012 г. 12:14
  • Оу... действительно что-то я напутал))

    чуть позже проверю и сообщу результат, спасибо.

    6 июля 2012 г. 13:02
  • Привет, вы проверили?


    Для связи [mail]

    10 июля 2012 г. 8:50
  • да, но результат тот же... не помогло...

    Будут еще варианты?

    • Предложено в качестве ответа Acronic 8 августа 2012 г. 12:54
    11 июля 2012 г. 9:14
  • Помоему проблема в void(), попробуйте без него, например следующий код выводи все ссылки на странице:

    javascript:tags=document.getElementsByTagName('a');for(i=0;i<tags.length;i++){alert(tags[i].getAttribute('href'));}


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 14 августа 2012 г. 6:23
    11 июля 2012 г. 9:42