C#代码:
GeckoElementCollection _Ellements = geckoWebBrowser1.Document
.GetElementsByTagName("input");
foreach (GeckoElement _e in _Ellements)
{
if (_e.GetAttribute("value") == "username"
{
// Code here if statement = true
}
}
HTML代码:
<input type="text" name="user" id="smf_autov_username" size="30" tabindex="1" maxlength="25" value="" class="input_text">
每秒调用此代码以查看用户是否更改了文本框的内容 但它不起作用,请帮助:(
答案 0 :(得分:0)
尝试这样的事情:
foreach (GeckoElement element in elements)
{
GeckoInputElement input = (GeckoInputElement)element;
if (input.Value == username)
{
//
}
}
答案 1 :(得分:0)
如果我正确理解了您的问题,那么问题在于,只读取DOM时,通常属于<form>
的元素的值不可用。浏览器希望在提交表单时使用它们。
好消息是,让c#程序可以使用这个值并不难,因为javascript 可以读取它,并把它放在c#可以获得它的地方。你只需要有一些javascript就可以将@value复制到你的c#可以看到的属性(比如@ data-value)。这可以在模糊或键盘处理程序中完成。例如:
<input id="foo" onblur="this.setAttribute('data-value', this.value)"></input>
这表示当“模糊”事件发生时(例如,当您离开该字段时),将该值复制到名为“data-value”的另一个属性(该名称没有什么特别之处,它也可以被命名为数据-foobar)。然后在你的c#中,你可以这样读:
if(_e.GetAttribute("data-value")) == "username")
有关更多示例,请参阅以下stackoverflow问题:
现在,我看到你正在检查每一秒,而不是触发某些事件。也许你想要在每个键盘上复制数据值而不是模糊。请注意,如果需要,您还可以在c#:
中自行模糊var activeElement = _browser.Window.Document.ActiveElement;
if(activeElement!=null)
activeElement.Blur();