Снимите флажок на веб-странице через элемент управления WebBrowser

2

Есть ли способ снять или установить флажок на веб-странице, загруженной в элемент управления веб-браузером? Спасибо.

Обновление: (Это то, что я изначально пытался без везения)

HtmlDocument rememberme = this.webBrowser1.Document;
rememberme.GetElementById("remBox").SetAttribute("checked", "false");
  • 1
    Краткий ответ: «Да».
  • 0
    Атрибут CHECKED на самом деле не bool, а подарок или не присутствует, поэтому, вероятно, сбой SetAttribute («флажок», «ложь»). Вы можете полностью удалить атрибут.
Показать ещё 1 комментарий
Теги:
winforms
checkbox
webbrowser-control

5 ответов

5
Лучший ответ

Вы можете использовать:

webBrowser.Document.InvokeScript

см

InvokeScript

Таким образом вы можете вызвать функцию JS, которая будет делать то, что вы хотите на странице.

Другой способ - использовать mshtml API, например: ( ( HTMLInputElement )this.webBrowser1.Document.GetElementById( "test" ).DomElement ).@checked = false;

  • 0
    Как правильно использовать JavaScript, чтобы снять один флажок?
  • 0
    Это зависит - если вы знаете идентификатор флажка, просто используйте document.getElementById( 'yourid' ).checked = false; Но если он динамический (как в ASP.NET в управлении), то вам придется использовать другой способ - найти его по имени класса, пересечь дерево DOM или что-то еще.
1

Вы можете использовать метод InvokeMember элемента HTML для вызова события DOM. В нашем случае "click". Если у вас есть элемент управления WebBrowser, все, что вам нужно сделать, это найти элемент и вызвать метод.

For Each ele As HtmlElement In Me.WebBrowser1.Document.All
        If ele.Name = "accept" Then
            ele.InvokeMember("click")
        End If
Next

В моем примере "accept" было именем элемента флажка. Вы можете использовать SetAttribute() для некоторых других элементов управления, но лучший способ эмулировать щелчок - найти, что такое состояние флажка, используя GetAttribute() и щелкнуть, если флажок установлен в значение false. Надеюсь, что это поможет.

0

http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.invokescript.aspx вам нужно проанализировать структуру страницы, чтобы узнать, как установить флажок и использовать метод Myles, чтобы установить/снять флажок в javascript.

  • 0
    Все это кажется очень сложным ...
  • 0
    Было бы сложнее, если бы вы пропустили классы-оболочки .Net и вызвали IE API напрямую.
Показать ещё 2 комментария
0

Версия LONG состоит в том, что вам придется использовать функции DOM для поиска идентификатора клиента элемента управления, который вы хотите обновить, а затем просто установите его значение.

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

EDIT:

В основном все, что вам нужно сделать, это:

HTMLDocumentClass doc = webBrowserControl.Document as mshtml.HTMLDocumentClass;

HTMLInputElement input = doc.all.item("checkboxID", 0) as HTMLInputElement;

input.value ="false";  //Could be 0, not sure... 
//could also be input.@checked = false, sorry I haven't actually used this on a checkbox before... one of these should work though

Так что да, не уверен, почему кто-то будет изо всех сил писать JavaScript и вызывать его, когда вы можете установить контрольное значение с тремя строками кода.

  • 0
    Должен быть input.@checked = false; , А с помощью JS вам не нужно ссылаться на mshtml, и вы можете сделать это в одной строке - this.webBrowser1.Document.InvokeScript( "uncheck" ); ,
  • 0
    Ну, одна строка в C # + одна в JS.
Показать ещё 2 комментария
0

В javascript вы можете использовать clientId для установки .checked = false.

  • 1
    Какое это имеет отношение к элементу управления webbrowser?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню