2017-01-31 8 views
0

私はシンプルなウェブブラウザを書いた。私はサイトにログインし、ページの値を変更することができます。しかし、私には1つの問題があります。フォームに入力された値を読み取るには?CefSharp getElementById( 'numbers')から値を読み取る方法は?

私が試してみた:。

labeltest.Text = chrome.EvaluateScriptAsync( "VARのC =のdocument.getElementById( '数字'); c.value;")のToString();

値をlabel.Test = cに戻すにはどうすればよいですか?

が、値を返します。 System.Threading.Tasks.Taks [CefSharp.JavascriptResponse]

+0

オブジェクト型での巨大な手がかりでなければなりません: は、ここでは、あなたのメインフォームのコードで試みることができるサンプルです。タスクを実行する必要があります。 C#のようなものをグーグルで試して、Taskを実行してください。 – amaitland

+0

また、ソースを検索した場合のほとんどのオープンソースプロジェクトと同様に、 – amaitland

答えて

0

あなたはjavascriptResponseのメンバーを使用する必要があります成功は、&メッセージを引き起こします。

private JavascriptResponse JsScriptResult(string script, int timeout) 
{ 
    if (browserTabControl.SelectedIndex == -1) 
     {return null;} 

    BrowserTabUserControl tabBrowser = (BrowserTabUserControl)browserTabControl.TabPages(browserTabControl.SelectedIndex).Controls(0); 
    IFrame frame = tabBrowser.Browser.GetFocusedFrame(); 
    Task<JavascriptResponse> Task = frame.EvaluateScriptAsync(script, timeout: TimeSpan.FromMilliseconds(timeout)); 
    Task.Wait(); 
    return Task.Result; 
} 

private void test() 
{ 
    JavascriptResponse result; 
    // get a list of input elements with an id 
    string script = "var els = document.getElementsByTagName('input');\n var t = [];\nfor (i=0;i<els.length;i++)\n if (els[i].id) t.push(els[i].id);\n t.join('\\n');"; 
    result = JsScriptResult(script, 5000); 
    if (!result.Success) 
    { 
     MsgBox(result.Message, MsgBoxStyle.Exclamation, "Script error"); 
     return; 
    } 

    // get value for an element with given id 
    string id = InputBox(result.Result.ToString, "Id to search ?"); 
    if (id.Length > 0){ 
     result = JsScriptResult($"document.getElementById('{id}').value;", 1000); 
     MsgBox($"Result = {result.Result}\nMessage = {result.Message}", result.Success ? MsgBoxStyle.Information : MsgBoxStyle.Exclamation, "Script result"); 
    } 
} 

またはVB.net

Private Function JsScriptResult(script As String, timeout As Integer) As JavascriptResponse 
    If browserTabControl.SelectedIndex = -1 Then 
     Return Nothing 
    End If 
    Dim tabBrowser As BrowserTabUserControl = CType(browserTabControl.TabPages(browserTabControl.SelectedIndex).Controls(0), BrowserTabUserControl) 
    Dim frame As IFrame = tabBrowser.Browser.GetFocusedFrame() 
    'Execute extension method 
    Dim Task As Task(Of JavascriptResponse) = frame.EvaluateScriptAsync(script, timeout:=TimeSpan.FromMilliseconds(timeout)) 
    Task.Wait() 
    Return Task.Result 
End Function 
Sub test() Handles ConnexionMdhMenuItem.Click 
    Dim result As JavascriptResponse 
    ' get a list of input elements with an id 
    Dim script As String = " 
    var els = document.getElementsByTagName('input'); 
    var t = []; 
    for (i=0;i<els.length;i++) 
     if (els[i].id) t.push(els[i].id); 
    t.join('\n');" 

    result = JsScriptResult(script, 5000) 
    If Not result.Success Then 
     MsgBox(result.Message, MsgBoxStyle.Exclamation, "Script error") 
     Return 
    End If 
    'get value for an element with given id 
    Dim id As String = Interaction.InputBox(result.Result.ToString, "Id to search ?") 
    If id.Length > 0 Then 
     result = JsScriptResult($"document.getElementById('{id}').value;", 1000) 
     MsgBox($"Result = {result.Result}{vbCr}Message = {result.Message}", 
       If(result.Success, MsgBoxStyle.Information, MsgBoxStyle.Exclamation), "Script result") 
    End If 
End Sub 
関連する問題