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でvalue属性を事前定義すると、次のようになります...

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

次に、MessageBox.Show(wkb.Document.GetElementById("test").getAttribute("value"));「自由」を正確に表示します。ただし、値が定義されていない場合、結果は常に空白になります(空ではなく、nullであると想定しています)。

これは私には理にかなっていますが、事前定義された値ではなく、ユーザー入力をフェッチします。ドキュメント全体を文字列に保存して解析できると思いますが、 element.valueルートを使用した標準のIEブラウザコントロールでははるかに簡単でした。私のおいしいオプションは何ですか?

4

2 に答える 2

0

C# クライアント側でフォームの値を読み取ることができません。C# で値を読み取るには、フォームをポスト (AJAX または完全なポストバック) する必要があります。値が変更されたかどうかを確認したい場合は、jQuery を使用.on('blur' ...して変更された値をキャプチャし、AJAX ポストをサーバーに戻すことができます。

于 2013-03-15T04:11:49.047 に答える
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());


        }
    }
}
于 2013-03-15T19:01:54.983 に答える