webbrowser コントロールを使用して web ページを読み込んでいます。その中には、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 呼び出しをサポートしている限り、インターフェイスにキャストできます。
EDIT サンプルの 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>
誰でも解決策を教えてもらえますか