これを試して:
procedure TForm1.Button1Click(Sender: TObject);
var
col: IHTMLElementCollection;
el: IHTMLInputElement;
begin
col := (WebBrowser1.Document as IHTMLDocument3).getElementsByName('register_vv[q][71]');
if col.length <> 0 then
begin
el := col.item(0, 0) as IHTMLInputElement;
el.value := 'mytext';
end;
end;
IE8標準モードでは、属性に対してのみgetElementById
大文字と小文字を区別して一致を実行します。IE7標準モードと以前のモードでは、このメソッドは属性と属性
の両方で大文字と小文字を区別しない一致を実行するため、予期しない結果が生じる可能性があります。ID
ID
NAME
したがって、TWebBrowser
IE7標準モードで動作し、以前のモードgetElementById
でも動作するはずの場合は、次のようになります。
procedure TForm1.Button2Click(Sender: TObject);
var
el: IHTMLElement;
inputElement: IHTMLInputElement;
begin
el := (WebBrowser1.Document as IHTMLDocument3).getElementById('register_vv[q][71]');
if Assigned(el) then
if Supports(el, IID_IHTMLInputElement, inputElement) then
inputElement.value := 'mytext';
end;
コレクションを使用getElementsByName
して要素を検索することをお勧めしますNAME
。
編集:
@SertacAkyuz最初のコメント:
WebBrowser1.OleObject.Document.getElementByID('register_vv[q][71]').Value:='test';
OPはコードをテストせず(OPがIEブラウジングモードを明示的に変更しない限り、デフォルトで機能するはずgetElementByID('verification_control_0')
です)、代わりに使用されたと確信しています。これは要素であり、メソッドはサポートさDIV
れていません。value
(したがって、エラーメッセージ"Method 'value' not supported by automation object"
)。