<input type="button" name="Current week""> <input type="button" name="Current week""> <input type="button" name="Current week"" />

WebBrowserのHTML要素から属性値を取得する

括弧内の数字が必要です。この場合は「14」です。送信するページのJavaScript関数に送ることができます。あるいは、「現在の週」ボタンを「クリック」する方法がありますか?

<form id="timetablesForm" action="timetablesController.jsp" method="post">
    

<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')" />

function displayTimetable(selectdweeks)

Windows Phoneで作業しているので、 WebBrowser.Document は利用できません。私は別のフォームで値を設定するために以下のスクリプトを使用しました:

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

HTMLページから値を取得するにはどうすればよいですか? InvokeScript で他にどのような関数を呼び出すことができますか?あなたが私に機能のリストを指すことができればそれを感謝します。

1

3 答え

これを使って

webBrowser1.SaveToString()

次に、HTMLを解析して、私が望むビットを取得する

2
追加された

次のコードは、最初の入力「今週」から「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]);
}

少しの背景:

当初は、値を返すことは次のように簡単に行うべきだと思いました。

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

しかし、これは常に SystemException を投げます( "不明なエラーが発生しました。エラー:80020101.")。これは、上記のコードが最初に目的の値を返すJavaScript関数を定義する理由です。次に、この関数を呼び出し、結果が正常に返されます。

1
追加された
奇妙な。私にとってはうまくいく。マンゴーは走っていますか? webBrowser1.InvokeScript( "eval"、 "document.getElementById( '現在の週')。click()"); をクリックしてください。
追加された 著者 Heinrich Ulbricht,
しかし、最初の InvokeScript の行は機能しますか?したがって、Webブラウザの IsScriptEnabled True ですか? Webページのライブサンプルがどこかにありますか?私はちょうどあなたのHTMLスニペットを持って、それをロードするためにNavigateToString()を使いました。たぶんそれは違いをもたらすかもしれない。
追加された 著者 Heinrich Ulbricht,
2番目のキャスト文字列は、同じ例外「Error:80020101」を送出し続けます。この方法で「今週」のボタンを「クリック」することは可能ですか?私は14を必要とするか、それをクリックする。どうもありがとう
追加された 著者 StanOverflow,
appはWP OS 7.1をターゲットにしており、そのコードも私のためにsystemexceptionをスローします:
追加された 著者 StanOverflow,
あなたの努力をありがとう、本当に感謝、私はちょうどSaveToStringを使用する必要があると思うので、数が残っているので、醜い方法が単純です:P
追加された 著者 StanOverflow,
うん、SaveToString()は2つの文字列分割操作を行い、1つの文字列をパラメータとして呼び出すことができます。ありがとう
追加された 著者 StanOverflow,

あなたはちょうどそれをやって、価値を得ることを試みましたか?

Object val = webBrowser1.InvokeScript("eval", "document.getElementById('loginform1').user.value;");
0
追加された
現在のweek'.onclick.value; "); のすべてのバリエーションを試しましたが、すべてSystemExceptionをスローします。
追加された 著者 StanOverflow,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript