webbrowserにappendChildでyahooへのリンクを追加させるには?

このQ&Aのポイント
  • VB6のコードでbodyタグの中にaタグを追加する方法について教えてください。
  • タイトルを持つ簡単なページにリンクを追加するVB6のコードを紹介します。
  • WebBrowserコントロールを使用してヤフーへのリンクを追加する方法を教えてください。
回答を見る
  • ベストアンサー

webbrowserにappendChildでyahooへのリンクを追加させるには?

お世話になります。 以下のvb6のコードを見ていただきたいですが bodyタグの中にh1タグしかない簡単なページに <a href="http://www.yahoo.co.jp">ヤフーへ</a> というaタグをウェブブラウザに表示させた際に追加させたいと 思っています。 その際、href属性とhttp://www.yahoo.co.jpという値を つけくわえるコードがわかりません。 {vb.netだと elem.SetAttribute("HREF", http://www.yahoo.co.jp) で記述できるみたいですが、vb6だとコンパイルエラーがでてしまいます} どのようにコーディングすればよろしいでしょうか? 教えてください。お願い致します。 Private Sub Command1_Click() WebBrowser1.Navigate ("http://hoho.hiho.jp/") Do While WebBrowser1.Busy = True '何もしないループ(笑) DoEvents Loop Start = Timer Do While Timer - Start < 2 DoEvents Loop Dim elm As IHTMLElement Set elem = WebBrowser1.Document.createElement("A") elem.innerText = "ヤフーへ" WebBrowser1.Document.body.appendChild (elem) End Sub

  • mixiho
  • お礼率41% (251/608)

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> ですがappendChildでソースに組み込む方法が知りたいのです。 全体的に説明不足なのに、なぜ appendChild にこだわるのかの理由もなく、 回答を全否定されるのもなんだかなぁ...と思いますけど。 Dim elem As Variant '<--- Variant ならいけた Set elem = WebBrowser1.Document.createElement("A") elem.innerText = "ヤフーへ" elem.href = "http://www.yahoo.co.jp" '<-- 追加 WebBrowser1.Document.body.appendChild (elem)

mixiho
質問者

お礼

そういいつつもちゃんと教えてくれるそんなKenKenさんが好きです。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

この処理の目的が良く分かりませんが....直接 Html を書き込んでしまえば? With WebBrowser1   .Navigate ("http://hoho.hiho.jp/")   While .Busy And .ReadyState <> READYSTATE_COMPLETE     DoEvents   Wend   .Document.body.insertAdjacentHTML _     Where:="beforeEnd", _     Html:="<a href=http://www.yahoo.co.jp>ヤフーへ</a>" End With ちなみに、一回 Yahoo へ行って、元のページに戻るとリンクが消えてます。 サーバーの Html を書き換えるわけではないので、当然の結果ですが、 これを阻止する必要があるなら、その方法はご自分で考えてみて下さい。

mixiho
質問者

お礼

ありがとうございます。 ですがappendChildでソースに組み込む方法が知りたいのです。

関連するQ&A

  • Webbrowserで完全にHPを表示させるまで待機したい。

    VB6.0を使っています。 Webbrowserを使いまして HPの表示を完了するまで待機するようにしようと思いました。 しかし表示前に”読み取り終了”になってしまいます。 表示するまで待機させるにはどうすればいいのでしょうか? どうかお願いいたします。 Label1.Caption = "読み取り中" WebBrowser1.Navigate "http://www.yahoo.co.jp" Do While WebBrowser1.Busy = True DoEvents Loop Do While WebBrowser1.Document.ReadyState <> "complete" DoEvents Loop Label1.Caption = "読み取り終了" あと、基本的な操作なのですが プロジェクトを読み込んだすぐにはコードもオブジェクトも表示されません。 一度実行してからコードを出さざるを得ないのですが これはどうすればいいのでしょうか?

  • webbrowserにフォーカスを設定したい。

    vb6のwebbrowser controlを使って、中国語の表示、記入を行うアプリを作っています。 ネットの質問箱で教えていただき、以下のとおり、webbrowser control内に、Text Boxを作りました。しかし、TextBoxにフォーカスがないため、入力のたびに、マウスをクリックしなくてはなりません。 そこで、常にテキストボックスにフォーカスがあるようにしたいのですが、このあと、どのように記述すればいいでしょうか。 ちなみに、webbrowser1.setfocusでは、何の変化も起きません。 webbrowserを使うのは初めてなので,、わかりやすく教えていただければ助かります。 Private Sub Form_Load() Dim doc1 As Object Dim body1 As Object WebBrowser1.Navigate2 "about:blank" Do While WebBrowser1.Busy DoEvents Loop On Error Resume Next Do DoEvents Set doc1 = WebBrowser1.Document Set body1 = doc1.body Loop While body1 Is Nothing On Error GoTo 0 With body1.Style .BorderStyle = "none" .margin = "0px" .overflow = "hidden" End With Set wbtext1 = doc1.CreateElement("TEXTAREA") wbText1.runtimestyle.Width = "100%" wbText1.runtimestyle.Height = "100%" body1.appendChild wbtext1 Set body1 = Nothing Set doc1 = Nothing End Sub

  • WebBrowserについて

    Visual Studio 2008を使っています 途中で処理が停止しまい困っています デバックで一時停止をすると Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop この部分で作業が止まっています 何かいい方法はないでしょうか? ソースは下記の通りです WebBrowser1.Navigate(New Uri("http://※※※※※※※※※※※※)) Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop ______________________________ Threading.Thread.Sleep(1000)とか入れても止まってしまいます 秒数はいろいろ試しましたが駄目でした WebBrowser1.Navigate(New Uri("※※※※※※※※※※※※)) Threading.Thread.Sleep(1000) Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop

  • vb2005 webbrowserでリンクをクリックした後の表示待ちの方法

    VB2005を勉強中の者です。 WebBrowser1.Navigateを使ってwebページを開いた際は下記while文での表示待ちが機能するのですが、ページ表示後、さらにInvokeMemberを使って先のページにクリックで進んだ後では同一の表示待ち部分がうまく機能せずにそのまま次の処理へと進んでしまいいます。 どこに問題があるのか分からず困っております。どなたか助けていただけませんでしょうか? WebBrowser1.Navigate("https://yahoo.co.jp") '↓ここは機能します While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While WebBrowser1.Document.GetElementsByTagName("a").Item(15).InvokeMember("click") '↓これが機能しなくて困っています! While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While '↓目的 TextBox1.Text = WebBrowser1.Document.Body.InnerText

  • WebBrowserにてsubmitの前にnavigateしてしまう

    いつもお世話になっております。 VB2005ユーザーです。 WebBrowser内の"submit"を押したあと、違うページに行きたいのですが、 "submit"を押す前に"Navigate"で指定しているページに行ってしまいます。 このようなコードを書いています。 With WebBrowser1 .Navigate("最初のURL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Document.Forms(0).InvokeMember("submit") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Navigate("次の指定URL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop 「指定URL」は"submit"により新しいHTMLが生まれるので、その後の作業のためにどうしても"submit"を押したいのですが、上のようなコードですと先に「指定URL」に行ってしまいます。 "submit"をクリックせず、無視してしまうのです。 Navigate("次の指定URL")を外せばクリックしてくれるのですが・・・。 WebBrowserを完全に待機させる方法などが必要なのでしょうか? 宜しくご教授のほどお願い致します。

  • 正しいWebBrowserの使い方(ループ判定)

    VB2008を使っています。WebBrowserのコンポーネントを使って ホームページにGET形式でパラメータを渡して画面のBODY部分を読み取る ものを作っているのですが、サーバーのレスポンスにもよりますが 1分間に20回で5分(100回程度)連続アクセスをするのですが、 以下のルーチンの場合何か不安を感じまして、 ネットでこれを使えばOKというものが無くて 確実に読み取る方法が知りたくて質問いたしました。 やはり、2つ目のイベントを用いる方が安心でしょうか? 正しいWebBrowserの使い方(ループ判定)をご存知の方教えてください。 '***** WebBrowser1.ReadyState ***** WebBrowser1.Navigate(URL) Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Or WebBrowser1.IsBusy = True Application.DoEvents() Loop data = WebBrowser1.DocumentText '***** DocumentCompletedイベントまでループ ***** public wait_flag as Boolean wait_flag = True WebBrowser1.Navigate(URL) Do While (WebBrowser1.IsBusy = True) Or (wait_flag = True) Application.DoEvents() Loop data = WebBrowser1.DocumentText '---- イベント ----- Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted wait_flag = False End Sub

  • WebBrowserでHtmlを取得

    WebBrowserでHtmlを取得する方法をおしえてください フォーム上に、WebBrowser1、TextBox1、Button1を配置しています。 TextBox1にHtmlを表示し、Button1は、WebBrowser1に表示している WEBページを更新します。 やりたい事  (1)フォームを開いた時に、URLで指定したWEBページを表示させ   TextBox1にHtmlを表示させる。  (2)Button1をクリックした時、表示しているWEBページを更新する。   更新後のHtmlをTextBox1に表示させる。  (3)TextBox1の表示が完了したらHtmlを処理する。(未着手) 現在、(1)は動作するのですが、(2)が動作しません(TextBox1のHtmlが更新されない) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate(オッズURL):webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" If Not WebBrowser1.Url.Equals("about:blank") Then WebBrowser1.Refresh() : webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub 何がいけないのか分かりません よろしくお願いします。

  • フリーズしてしまいます。

    アクセスでWebBrowserコントロールを使ってIE操作をしているのですが フリーズしてしまいます。 フォームに、WebBrowser0を配置して、 ---------------------------------- Private Sub Form_Load() Me.WebBrowser0.Navigate "http://login.yahoo.co.jp/config/login?logout=1" Call wait 省略・・・ End Sub ---------------------------------- Sub wait() Const READYSTATE_COMPLETE As Long = 4 Do Until Me.WebBrowser0.ReadyState = READYSTATE_COMPLETE Loop Do While Me.WebBrowser0.Busy = True DoEvents Loop End Sub ---------------------------------- を実行すると必ずフリーズします。 ---------------------------------- Sub wait() Do While Me.WebBrowser0.Busy = True DoEvents Loop End Sub ---------------------------------- にしたら問題なく表示されます。 でもこれだけだと、表示し終わりません。 表示されてないのに次のコードへ進んでしまいます。 そもそもなぜフリーズするのでしょうか? アクセス2007です。ご回答よろしくお願いします。

  • vb2005のWebbrowserコントロールでSubmitすると動作

    vb2005のWebbrowserコントロールでSubmitすると動作がおかしいのですが Browser.Navigate("http://hyperlink.xrea.jp/regist.php") Do While Not Browser.ReadyState = WebBrowserReadyState.Complete Application.DoEvents() Loop Browser.Document.All.GetElementsByName("site_name")(0).InnerText = "test"           ・           ・ Browser.Document.Forms(0).InvokeMember("submit") このようなソースなのですが、submit後のページが <div id="copyright"> Copyright By ***</div></body></html> のように、最後の方しか返してこないのです。 手動でsubmitボタンをクリックすると大丈夫なのですが、なぜだかわかるでしょうか?

  • WebBrowserコントロール(続き)

    昨日質問したものです。(VB6.0) 出来たと思ったらエラーが出てやっぱり出来ませんでした。 もう3時間挑戦してますがダメです。 例えば a = "<html><body>あいうえおかきく</body></html>" と入ってる場合 コマンドをクリックすれば WebBrowserにaを表示する方法なのですが、、 Private Sub Command1_Click() WebBrowser1.Navigate2 "about:blank" WebBrowser1.Document.Body.Innerhtml = a End Sub これだとエラーが出ます。 何がいけないんでしょう(T_T;;

専門家に質問してみよう