WebBrowserコントロール内のテキストボックスに文字列をセットする への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 太郎冠者  (社会人)
投稿日時
2010/2/15 04:13:49
Amebaのゴミアカがあったので試してみました。
まず、Amebaブログの本文入力欄は「タグの非表示」「HTMLタグを表示」の2種類あって
「HTMLタグを表示」の場合、下記のコードで文字を挿入できました。
しかし「タグの非表示」の場合上記のコードではダメでした。
HTMLソースを軽く眺めてみたんですが、どうやら「タグの非表示」の場合、画面に表示されている入力欄はHTMLのTEXTAREA要素ではなく、JavaScriptを使って作成されたもののようです。
なので「タグの非表示」の場合はTextAreaのInnerTextに文字がちゃんと入っていても、画面には表示されないようです。
これ以上の細かな話はHTMLはなんとなく読めるレベルの私には分からないので、他の識者の方にお願いしたいと思います。
まず、Amebaブログの本文入力欄は「タグの非表示」「HTMLタグを表示」の2種類あって
「HTMLタグを表示」の場合、下記のコードで文字を挿入できました。
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim el As HtmlElement = all.Item("entryTextArea")
el.InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
しかし「タグの非表示」の場合上記のコードではダメでした。
HTMLソースを軽く眺めてみたんですが、どうやら「タグの非表示」の場合、画面に表示されている入力欄はHTMLのTEXTAREA要素ではなく、JavaScriptを使って作成されたもののようです。
なので「タグの非表示」の場合はTextAreaのInnerTextに文字がちゃんと入っていても、画面には表示されないようです。
これ以上の細かな話はHTMLはなんとなく読めるレベルの私には分からないので、他の識者の方にお願いしたいと思います。
投稿者 クロネコ  (社会人)
投稿日時
2010/2/15 03:00:24
entry_textの要素を探すため、以下のコードも試してみました。
「0の値はインデックスに対して有効ではありません」とエラーが出てしまいます。
どなたか、アドバイスよろしくお願い致します。
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = _
WebBrowser1.Document.GetElementsByTagName("entry_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
「0の値はインデックスに対して有効ではありません」とエラーが出てしまいます。
どなたか、アドバイスよろしくお願い致します。
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = _
WebBrowser1.Document.GetElementsByTagName("entry_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
投稿者 クロネコ  (社会人)
投稿日時
2010/2/14 22:30:06
太郎冠者様、返信有り難うございます。
"entry_text"ですね?
これもさっき試してみましたがダメでした。
何か根本的に間違っているのでしょうか?
"entry_text"ですね?
これもさっき試してみましたがダメでした。
何か根本的に間違っているのでしょうか?
投稿者 太郎冠者  (社会人)
投稿日時
2010/2/14 15:20:53
単純に取得する要素が間違っている気がします。
type="hidden"は隠し要素となるので画面には表示されません。
<input name="blog_text" type="hidden" value="" />
ブログ本文を入力するならこっちのTextAreaを取得しなければならないと思います。
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
type="hidden"は隠し要素となるので画面には表示されません。
<input name="blog_text" type="hidden" value="" />
ブログ本文を入力するならこっちのTextAreaを取得しなければならないと思います。
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
投稿者 クロネコ  (社会人)
投稿日時
2010/2/14 12:22:09
XPsp3:VB2005
私が書いてるブログ(Ameba)なのですが、ある程度自動化出来れば楽だなぁと思い、WebBrowserに表示させて、ブログのタイトルと本文を入れようとしたのですが、タイトルは入るのに本文が入りませんでした。
htmlを解析し、inputから要素を抜き出しセットすれば問題ないと思っていたのですが、どうも違うようです。
この2つのテキストボックスの違いは、rowsの設定の違いしか思いつきません。
実際はどう違うのでしょうか?
また、何故、本文の方のテキストボックスには文字列が入らないのでしょうか?
教えて頂けたなら、非常にありがたいです。
よろしくお願い致します。
htmlソース----------------------------------------------------
<dl id="entryTitle">
<dt><label for="title">タイトル</label></dt>
<dd><input type="text" name="entry_title" maxlength="48" size="40" value="" id="title" title="全角・半角48文字以内" /></dd>
</dl><!-- entryTitle -->
<div id="entryBody" class="entryWrap">
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
<input name="blog_text" type="hidden" value="" />
</div><!-- //entryBody -->
<div id="controlTA">
htmlソース----------------------------------------------------
○出来る
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("entry_title")
forms(0).InnerText = "ブログタイトル" ' テキストボックスに「タイトル」を入力
×出来ない
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("blog_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
私が書いてるブログ(Ameba)なのですが、ある程度自動化出来れば楽だなぁと思い、WebBrowserに表示させて、ブログのタイトルと本文を入れようとしたのですが、タイトルは入るのに本文が入りませんでした。
htmlを解析し、inputから要素を抜き出しセットすれば問題ないと思っていたのですが、どうも違うようです。
この2つのテキストボックスの違いは、rowsの設定の違いしか思いつきません。
実際はどう違うのでしょうか?
また、何故、本文の方のテキストボックスには文字列が入らないのでしょうか?
教えて頂けたなら、非常にありがたいです。
よろしくお願い致します。
htmlソース----------------------------------------------------
<dl id="entryTitle">
<dt><label for="title">タイトル</label></dt>
<dd><input type="text" name="entry_title" maxlength="48" size="40" value="" id="title" title="全角・半角48文字以内" /></dd>
</dl><!-- entryTitle -->
<div id="entryBody" class="entryWrap">
<textarea name="entry_text" cols="" rows="14" id="entryTextArea">
</textarea>
<input name="blog_text" type="hidden" value="" />
</div><!-- //entryBody -->
<div id="controlTA">
htmlソース----------------------------------------------------
○出来る
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("entry_title")
forms(0).InnerText = "ブログタイトル" ' テキストボックスに「タイトル」を入力
×出来ない
Dim all As HtmlElementCollection = WebBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName("blog_text")
forms(0).InnerText = "ブログ本文テスト" ' テキストボックスに「ブログ本文」を入力
しかも、実際にAmebaでも試して頂き、感謝です。
「HTMLタグを表示」で文字挿入出来ただけでも、大変助かります。
御陰様で、ここでstopせずにすみます。
有り難うございます。
JavaScriptを使っているとすると難しそうですね。