当最初未在文档文本中定义时检索元素属性值
本文关键字:定义 检索 元素 属性 文本 文档 | 更新日期: 2023-09-27 18:04:13
假设我们有一个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"));
准确地显示"自由"。然而,如果value没有定义,结果总是空的(我假设它是空的,而不仅仅是空的)。
这对我来说是有意义的,但我将获取用户输入,而不是预定义的值。我认为可以将整个文档保存为字符串并解析它,但在标准的IE浏览器控件中使用元素要简单得多。值路线。我的好吃的选项是什么?
不能在c#客户端读取表单值。您必须在c#中返回(AJAX或完整的回发)表单以读取值。如果您想查看某个值是否发生了更改,可以使用jQuery的.on('blur' ...
捕获更改后的值,并通过AJAX发送回服务器。
我还想补充一下,这个方法是有效的,有点偏离了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());
}
}
}