2013-03-15 40 views
0

說我們有一個WebKitBrowser控制和我們設定的DocumentText因此最初定義...檢索元素屬性值時,不文檔文本

wkb.DocumentText = @" 
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'> 
<html> 
<head></head> 
<body> 
<form> 
<input type='text' id='test' name='smith'><br> 
</form> 
</body> 
</html> 
"; 

如果我是那麼獲取該輸入字段的用戶輸入通過C#,什麼是正確的方法?

如果我預先定義的HTML,像價值屬性...

<input type='text' id='test' name='smith' value='freedom'> 

然後MessageBox.Show(wkb.Document.GetElementById("test").getAttribute("value"));準確顯示的 「自由」。但是,如果沒有定義值,結果總是空白(我假設它是空的,而不只是空的)。

這對我來說很有意義,但我會獲取用戶輸入的,而不是預定義的值。我想一個可以在整個文檔保存到一個字符串和解析它,但它是在與element.value路線標準的IE瀏覽器的控制要簡單得多。我的美味選項是什麼?

回答

0

您無法讀取C#客戶端形式的值。您必須發佈(AJAX或完整回發)表單回來讀取C#中的值。如果您想查看某個值是否發生了變化,您可以使用jQuery的.on('blur' ...捕獲更改後的值並將AJAX回發到服務器。

0

我也想補充,這種方法可行,那種打算過viperguynaz的正確答案。

基本上你創建的WebKit瀏覽器控件的導航方法,再點WebKit瀏覽器的控制做的活動部分。你在HTML端執行一個功能無用的表單提交,然後解析用戶輸入的參數,然後解析你的任何幻想等待你。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Web; 
using WebKit; 

namespace test_run 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      wkb.DocumentText = @" 
       <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'> 
       <html> 
       <head></head> 
       <body> 
       <form method='get'> 
       <input type='text' name='pike'><br> 
       <input type='submit' value='Submit'> 
       </form> 
       </body> 
       </html>"; 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

     } 

     private void wkb_navigating(object sender, WebKitBrowserNavigatingEventArgs e) 
     { 
      string param1 = HttpUtility.ParseQueryString(e.Url.ToString()).Get(0); 
      MessageBox.Show(param1.ToString()); 


     } 
    } 
}