Получить значение атрибута из HTML-элемента в WebBrowser - PullRequest
1 голос
/ 25 ноября 2011

Мне нужно число в скобках, в данном случае «14», чтобы я мог отправить его функции JavaScript на странице для отправки или, альтернативно, есть ли способ «нажать» кнопку «Текущая неделя»?

<form id="timetablesForm" action="timetablesController.jsp" method="post">
    <p>
        <input type="button" name="Current week" value="Current week" onclick="javascript:void+displayTimetable('14')" />
        <input type="button" name="Next week" value="Next week" onclick="javascript:void+displayTimetable('15')" />
        <input type="button" name="Current semester" value="Semester 1" onclick="javascript:void displayTimetable('7;8;9;10;11;12;13;14;15;16;17;21')" />
    </p>

function displayTimetable(selectdweeks)

Я работаю в Windows Phone, поэтому WebBrowser.Document недоступен.Я использовал приведенный ниже скрипт для установки значения в другой форме:

webBrowser1.InvokeScript("eval", "document.getElementById('loginform1').user.value = 'username';");

Как мне получить значение со страницы HTML?Какую другую функцию я могу вызвать с помощью InvokeScript?Цените это, если вы можете указать мне на список функций.

Ответы [ 3 ]

2 голосов
/ 26 ноября 2011

Используйте это

webBrowser1.SaveToString()

Затем проанализируйте HTML, чтобы получить нужный бит

1 голос
/ 25 ноября 2011

Следующий код извлекает «14» из вашего первого ввода «Текущая неделя»:

private void button1_Click(object sender, RoutedEventArgs e)
{
    // first define a new function which returns the content of "onclick" as string
    webBrowser1.InvokeScript("eval", "this.newfunc_getmyvalue = function() { return document.getElementById('Current week').attributes.getNamedItem('onclick').value; }");
    // now invoke the function and save the result (which will be "javascript:void+displayTimetable('14')")
    string onclickstring = (string)webBrowser1.InvokeScript("newfunc_getmyvalue");
    // now split the string at the single quotes (you might have to adapt this parsing logic to whatever string you expect; this is just a simple approach)
    string[] substrings = Regex.Split(onclickstring, "'");
    // this shows a messagebox saying "14"
    MessageBox.Show(substrings[1]);
}

Небольшой фон:

Изначально я думал, что возвращение значения должно быть таким же простымas:

// ATTENTION: THIS DOESN'T WORK
webBrowser1.InvokeScript("eval", "return 'hello';");

Но это всегда выдает SystemException («Произошла неизвестная ошибка. Ошибка: 80020101.»). Это причина, почему код выше сначала определяет функцию JavaScript, которая возвращает желаемыйзначение.Затем мы вызываем эту функцию, и результат возвращается успешно.

0 голосов
/ 25 ноября 2011

Вы пытались сделать именно это, получить значение?

Object val = webBrowser1.InvokeScript("eval", "document.getElementById('loginform1').user.value;");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...