在Delphi中如何判断TWebBrowser控件的页面中某的对象是否存在?(100分)

  • 主题发起人 LiChaoHui
  • 开始时间
L

LiChaoHui

Unregistered / Unconfirmed
GUEST, unregistred user!
在JavaSript中可以这样写 if (oObject != null)

var oObject = document.all.item("sample");
if (oObject != null){
if (oObject.length != null){
for (i = 0; i < oObject.length; i++){
alert(oObject(i).tagName);
}
}
else{
alert(oObject.tagName);
}
}

但是在Delphi中是用的是OleVariant变量,
如何判断OleVariant变量是否引用了一个对象,
我的方法是:
var
vDoc, vA: OleVariant;
begin
vDoc := IE.Document;
if not VarIsNull(vDoc.All.item('thelink')) then
begin
vA := vDoc.All.item('thelink');
FEventDisp := IDispatch(vA.onclick);
vA.onclick := OleVariant(Self as IDispatch);
end;
end;
但是不管用
 
好象方法有问题,你可以具体一点。
第一步想做什么?
 
我需要判断Web页面中某些对象是否存在,
如果存在,则获得此对象的引用,
并进行处理
 
还需要问一下,OleVariant 和 IDispatch
到底有什么区别,
怎么判断OleVariant 的值是否等于 $00000000?
 
使用OleVaraint 就是自动化的调用方法,它是借助 IDispatch 接口上的
Invoke方法调用接口上的方法的,速度较慢。

下面的代码采用 VTable 方式.
procedure TForm1.Button1Click(Sender: TObject);
var
doc:IHTMLDocument2;
iELC:IHTMLElementCollection;
IMyItem:idispatch;
begin
doc := web.document as IHTMLDocument2;
iELC := doc.get_all;
IMyItem := nil;
IMyItem := iELC.item('mynum',0);
if IMyItem <> nil then
begin
......
end;
end;
 
多人接受答案了。
 
顶部