我正在尝试更改WebBrowser控件中隐藏字段上的值。WebBrowser控件更新隐藏字段
我可以注入显示警告框的JavaScript。我可以让警告框显示隐藏字段的当前值。但是,我无法让隐藏字段的价值发生变化。
我曾尝试通过执行此改变的值(tb是web浏览器控件):
HtmlElement head = tb.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = tb.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = "function DoIt() { document.getElementById('TestHiddenField').value='Hello World'; alert('Updated'); }";
head.AppendChild(scriptEl);
tb.Document.InvokeScript("DoIt");
在警报上述不弹出。
而且我已经试过这样:
tb.Document.Body.InnerHtml = tb.Document.Body.InnerHtml.Replace("MyValue", "YourValue");
在上面我看到的innerHTML并调试时发生改变。
但是,当页面完成加载并查看源代码时,值永远不会更改。
此外,即使我可以注入JavaScript,它弹出警报,我永远无法找到JavaScript代码int。
发生了什么事?我究竟做错了什么?
谢谢!
更新:
我在DocumentCompleted事件这样做。
- 我没有使用ViewState的
另一个更新
:
我添加了另一个领域。这次是一个非隐藏的文本字段。
<input type="hidden" id="TestHiddenField" value="MyValue" name="TestHiddenField" />
<input type="text" id="TestField" value="MyValue" name="TestField" />
这里是发生了什么,当我这样做:
tb.Document.Body.InnerHtml = tb.Document.Body.InnerHtml.Replace("MyValue", "YourValue");
当页面呈现在WebBrowser控件的文本框中显示文本“YourValue”但是当我查看源代码的价值仍然等于“ myvalue的”。
这是怎么回事?我需要它等于“YourValue”。
任何想法?
再次感谢!
我在DocumentCompleted事件中执行此操作。 – user390480
请参阅新的更新测试。 – user390480