> 古いバージョンの IE オブジェクトの DOM では getElementsByClassName
> をサポートしていません.
MSDN オンラインの記事によると IE 9 からのようです.
ついでに,IE で表示している場合の操作例です.
TShell コンポーネントを使用しています.
[タイプライブラリの取り込み ( Delphi 2009 - XE5 )]
http://mrxray.on.coocan.jp/Delphi/CompoInstall/TypeLibraryD2009.htm
IE を新規に起動して,ローカルの this_is_a_button.htm を表示します.
そこのボタンをクリックします.
this_is_a_button.htm の中身は,これまでと同じで,
<Button class="submit" onClick="location.href='http://mrxray.on.coocan.jp/index.htm'">SEND</Button>
です.
動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro + IE 11 です.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SHDocVw, ExtCtrls, Shell32_TLB, OleServer;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Shell1: TShell;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses
MSHTML,
ShellAPI;
{$R *.dfm}
//=============================================================================
// 新規にIEを起動して,操作対象のページを表示
//
// ShellExecuteの使用にはusesにShellAPIが必要
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LAppStr : String;
LAppCmd : String;
begin
//IEはフルパスでなくても起動可能
LAppStr := 'IEXPLORE.EXE';
LAppCmd := ExtractFilePath(Application.ExeName) + 'this_is_a_button.htm';
ShellExecute(Handle, 'open', PChar(LAppStr), PChar(LAppCmd), nil, SW_SHOW);
end;
//=============================================================================
// 表示中のウェブページのボタンをクリックするサンプル
// JavaScriptのコードとして実行
//
// ShellWindowsの使用にはusesにSHDocVwが必要
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
LSHWindows : ShellWindows;
LIEObj : InternetExplorer;
LDoc2 : IHtmlDocument2;
LHTMLWindow : IHTMLWindow2;
LTagName : String;
LJsText : String;
begin
LSHWindows := Shell1.Windows as ShellWindows;
LIEObj := LSHWindows.Item(LSHWindows.Count - 1) as InternetExplorer;
LDoc2 := LIEObj.Document as IHTMLDocument2;
if Assigned(LDoc2) then begin
LHTMLWindow := LDoc2.parentWindow as IHTMLWindow2;
LTagName := '''button''';
LJsText := 'document.getElementsByTagName(' + LTagName + ')[0].click();';
LHTMLWindow.execScript(LJsText, 'JavaScript');
end;
end;
end.
|