• 締切済み

C#2008でWebBrowserコントロールからJavaScriptで生成されたForm値に値をセットするには

VisualStadio2008でC#で開発しています。 .netframework標準のwebBrowserでいろいろなページに値をセットして結果を取得するアプリを作っていて 通常のHTMLのページであれば webBrowser.Document.All.GetElementsByName("hoge")[0].InnerText = "hoge"; など値をセットしたり取得したりすることができます。 しかしFORM部分をJavaScriptから動的にHTMLを作成している(と思われる)ページに対しては上記の方法で取得することができませんでした。 また試しにGetElementsByTagName("form")とかGetElementsByTagName("input")とかでFOR文でぐるぐる回して探してみましたが該当するデータは見当たらず javaScriptで動的に生成された部分はwebBrowserから取得できない仕様のようです。 そこで質問なのですがなんとかしてこの動的に生成されたFORMに値をセットしてSUBMITする方法ってないでしょうか? webBrowser上に目で見ればはっきり見えてるのに操作ができなくて朝から行き詰ってます。 よろしくお願いいたします。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

>しかしFORM部分をJavaScriptから動的にHTMLを作成している(と思われる) 本当にそうか、まずは確認を。 http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/ajax_savvy_viewsource.php >そこで質問なのですがなんとかしてこの動的に生成されたFORMに値をセットしてSUBMITする方法ってないでしょうか? MSHTMLを経由したほうが扱いやすい。 MSHTML.IHTMLDocument2 doc = (MSHTML.IHTMLDocument2)webBrowser1.Document.DomDocument;

関連するQ&A

  • (VB)WebBrowserの値が更新されない

    VisualStudio2008の環境でFormにWebBrowserを配置し そこから以下の処理でHtml内の値を取得するプログラムを作成しています。 For Each he_TR As HtmlElement In he_TableChild.GetElementsByTagName("TD") If he_TR.Id = "AAAAA" Then TXT= he_TR.InnerText.ToString .TextBox1.Text = TXT End If Next これを1s間隔のタイマーで動かすと一定時間経過で(5分くらい?)値が取得できなくなります。 アタッチするとTimer処理は行われTextBoxに値を入れる箇所も通っています。 Html内のデータが更新されていない様に思えるのですが何か解決策があればご教示下さい。 下記が起動時のメソッドとなります。 Private Sub View() Me.WebBrowser1.Navigate("") '文字列で指定したURLに飛ぶ Me.WebBrowser1.Navigate("http://www.xxxxxxxxxxxxxxxx/") '完全に表示しきるまでWait Do Application.DoEvents() Loop Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete And WebBrowser1.IsBusy = False 'Dim lngCno As Long, lngTno As Long Timer1.Interval = 1000 Timer1.Start() End Sub

  • C#2010 webBrowserについて

    こんにちは。WebBrowserコントロールを使ってウェブページを表示するプログラムを作成しています。 私の環境はWindows7の64bitでIE9がインストールされています。また、.NETFrameworkは4.5です。 WebBrowserはデザイナ上でフォームに設置しています。 友達の環境で動かないと報告を受けたので、プログラムを簡略化して private void Form1_Load(object sender, EventArgs e) { this.webBrowser1.Navigate("https://www.google.co.jp/"); } これだけにして試してもらいましたが、真っ白で何も表示されないと報告を受けました。 その友達のPCではIE10がインストールされています。また.NETFrameworkは4.0でした。 別の二人の友達の環境では正常に動いたようです。(こちらは、環境の詳細を聞いていません。) 特にエラーが出るわけでもなく、真っ白で何も表示されないという事で困っています。 何を疑って調べればいいのかが、まず分かりません。 以上、宜しくお願い致します。

  • Form1からForm2へDGVの値を

    VisualStadioのC#WindowsフォームアプリケーションでDataGridViewの勉強中です。 Form1で表示したDataGridView1の行をダブルクリックして、public関数を使ってForm2のDataGridView2に選択行の値を取得したいです。。 助けてください。

  • webbrowserでのjavascriptを含むソース取得

    webbrowserでのjavascriptを含むソース取得 お世話になっております。 VB 2005を利用しています。 webbrowserを用いてHTMLソースの表示をしようと、 WebBrowser1.Document.Body.OuterHtml と記述したところ、javascriptのソースが表示されません。 同じサイトをIEのソースで表示すると問題なく表示できます。 HttpWebRequest を用いたソースの取得方法はわかるのですが、 事情があって、webbrowser上から行いたいのです。 よろしくアドバイスの程お願いいたします。

  • JavaScriptからFORMを生成できるのでしょうか?

    素朴な疑問かもしれませんが、 HTML側にFORMタグを置かずに、JavaScriptのみでsubmitを行う方法がありますでしょうか? methodやactionはてはnameまでプロパティ指定できてsubmitの対象をスクリプト内で制御する事例はあるのですがFORMそれ自身を生成(?)する事例を見たことがありません。 セキュリティうんぬんの問題ならもっと危険な関数が昔からあっていろいろな事例がありますので、禁じ手になっているとはどうしても思えません。 なぜ、こんな疑問を持ったかというとJSファイル使ってをHTMLとの分離を考えた場合、常に空のFORMタグをHTML側で用意しなければならないとしたら分離の意味がないような気がして・・・。しかもテキストボックスなどフォームのエレメントはDOM(ID=)を利用すればFORMタグに囲まれていなくても参照できますし・・・。さらにdocument.forms.lengthでフォーム数までわかるのにそれを追加する事例がまったく見あたりません。 childNodeとかではなく、シンプルな手法の解かる方がおられましたらヒントなりを教えてください。 よくご存知の方で、方法が無いということならその理由とか教えていただけると幸いに思います。

  • WebBrowser コントロールでフレームを操作したり...

    お世話になります。 以下のWebBrowserコントロールの使用法について、ご教授をお願いしますm(_ _)m ■ハイパーリンクがクリックされた場合や、JavaScript等によるページの移動が行われる際に、ページを表示せずに .LocationURL を使ってリンク先を知る方法について ■フレームページの場合に、フレームのHTMLのURLが値が返されてしまい、フレーム内に表示されているページを取得する方法について ■表示しているHTMLの、フレームを指定してページを移動する方法について(WebBrowserコントロールによって、フレームを操作する方法について) 以上、1つでも構いませんので、知識をお持ちの方はご指導の程お願いしますm(_ _)m なお・・・ 開発環境は・・・ Visual Studio.NET(VB7/.NET Framework1.0)で開発しています。 ※.NET Framework 2.0環境は対応していません。ですので、.NET Framework 2.0等の命令は使えないです;;

  • strutsを使ってjavascriptの値で値を変えた後

    いつも大変助かっております。さっそくですが、質問です。 1.strutsを使って、JSPページにフォームでセットした値を取得 (コンボボックスの値) 2.JSPでフォームから取得しセットした値を表示させた後、その値をjavascriptで取得、値を編集 3.2で作られた値をJSPページに表示させる (コンボボックスの値) つまりは、コンボボックスの値を取得し、javascriptで編集した後、そのコンボボックスの値を編集した値に変えて表示したいのです。 2まではできたのですが、3ができません。。 どなたかご教授くださいませ。 よろしくお願いします。

  • WebBrowserコントロールにHTMLを直接渡す

    タイトルの表現が適切か分かりませんが、 やりたいことは、VB6でHTMLを生成して、それをFormに貼り付けたWebBrowserコントロールに表示したいのです。ファイルに落とすの でなく、文字列で直接渡す方法が知りたいです。 事前検索で同じ質問を見つけました。まさに同じ内容なのですが、 残念なことに解決方法は不明なままです。 http://okwave.jp/kotaeru.php3?q=1689419 usagidaisuki さんがこれを見てくださればありがたいですが。 このコントロールはヘルプが無くて、調べるのに骨が折れます。。。 方法をご存知の方、ご教授ください。

  • ASP.NET(C#)実体のないコントロール

    お世話になっております。 標題の用に、実体のないコントロールの値の取得について質問させて頂きます。 対象のaspxの中に複数のアップデートパネルを配置しています。 そのうちの一つが、JavaScriptで動的に生成されたコントロールでできています。 JavaScriptで生成されているため、ソースを見てもコントロールの実態はありません。 JavaScriptからは、jQueryを利用し、$("#hoge").val() の形式で値は取得できます。 C#側からは、実体がないため当然、hoge.Textとしてもエラーとなってしまいます。 アップデートパネル内の、JavaScriptで動的に生成されたコントロールをC#側から取得する方法があればご教授いただけますと助かります。 もしくは、動的に生成されているhtmlから簡単にC#側のコントロールを生成する方法はないでしょうか。前提として、このアップデートパネルないのコントロールはJSで数や項目がかわってしまいます。その変更に対しては都度サーバとの通信は行っていません。 無理な質問かと思いますが、どうぞよろしくお願い致します。

  • Newで生成した複数のFormを同時に操作したいのですが

    自作ブラウザ内でリンクをクリックしたときに、リンク先ページを、IEでなく自作ブラウザで開くためには、以下のような方法がよいという記述をみつけました。 Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) With New Form1 .WebBrowser1.RegisterAsBrowser = True Set ppDisp = .WebBrowser1.Object .Visible = True End With End Sub ところで上記のように、リンクをクリックするごとに生成された複数のForm1の例えばCaptionをいっぺんに”A”に変更するにはどのようにすればよろしいでしょうか。(VB6.0) 恐れ入りますが、何卒ご教授いただきたく、よろしくお願いいたします。

専門家に質問してみよう