有没有办法访问webbrowser的一个跨域的frame(200分)

  • 主题发起人 主题发起人 wanderld
  • 开始时间 开始时间
W

wanderld

Unregistered / Unconfirmed
GUEST, unregistred user!
众所周知,IE的内核规定不允许跨域访问
如果webbrowser的主框架与子框架不属于同一个域名
则不能通过枚举frame得到的IHTMLWINDOW2对象得到子框架的IHTMLDOCUMENT2
有没有其他办法得到子框架的IHTMLDOCUMENT2
另外,想问问DOCUMENTCOMPLETE事件中的pdisp是哪个对象的借口,怎么使用
 
var
OleContainer: IOleContainer;
enum: ActiveX.IEnumUnknown;
FetchedContrs: LongInt;
Unknown: IUnknown;
Wb: IWebBrowser2;
Doc: IHTMLDocument2;
begin
OleContainer := WebBrowser.Document as IOleContainer;
if OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum) = S_OK then
begin
while Enum.Next(1, Unknown, @FetchedContrs) = S_OK do
begin
if Unknown.QueryInterface(IID_IWebBrowser2, Wb) = S_OK then
Doc := Wb.Document as IHTMLDocument2;
end;
end;
end;

pdisp.QueryInterface(IID_IWebBrowser2, Wb);
 
多人接受答案了。
 
后退
顶部