我正在使用 webbrowser 控件加载网页,其中有一个由 javascript 生成的表单。
当我尝试访问 c# 中的元素时,找不到它们。
该页面在普通浏览器中呈现良好,但在我的 winforms 应用程序中,表单元素未呈现,我只能在调试时看到生成表单的 javascript
我在堆栈上找到的一个接近的解决方案是将 to 强制webbrowser.document.domdocument
转换ihtmldocument
,但我没有成功,
这就是我想做的
Dim doc As HtmlDocument = DirectCast(wbMain.Document.DomDocument, MSH.IHTMLDocument)
但我收到了这个警告
将“mshtml.IHTMLDocument”转换为“System.Windows.Forms.HtmlDocument”时可能会出现运行时错误。
当我忽略并运行时,我收到了这个错误
无法将类型为“mshtml.HTMLDocumentClass”的 COM 对象转换为类类型“System.Windows.Forms.HtmlDocument”。表示 COM 组件的类型的实例不能转换为不表示 COM 组件的类型;但是,只要底层 COM 组件支持对接口的 IID 的 QueryInterface 调用,它们就可以转换为接口。
编辑示例 javascript
<SCRIPT type=text/javascript>
(function(){
function runElemGen() {
var ElemGenForm = [{"label":"Email:","name":"ElemGen_email_field","oldName":"","value":"","ElemGen":"text"},{"label":"","name":"ElemGensubscribe","oldName":"","value":"Submit","ElemGen":"submit"}];
ElemGenBuildForm({makeDivs: true, arr:ElemGenForm, place:"ElemGen-email-form-"});
}
if (window.addEventListener) {
window.addEventListener("load", runElemGen, false);
} else {
window.attachEvent("onload", runElemGen);
}
})();
</SCRIPT>
任何有解决方案的人都可以帮忙吗