如题,要包含框架的,直接用innertext可是得不到的啊
就让给100了,还可以多加分!
就让给100了,还可以多加分!
解决方案 »
- 如何判断点是否在一个不规则的多边形区域内?
- ADOConnection 在 close后 oracle数据库服务器的会话中仍然保留连接,为什么?
- fengxue291080(★爱有多深★) 给我进来
- 中序非递归二叉树遍历 英文怎么翻译
- 有个问题不知该问VC还是Delphi,相信很多同行都关心这个问题,就是:VC与Delphi通过Dll混合编程,如何调用Dll中的MDI子窗体?
- 探讨快到而立之年的程序员日后的出路问题
- 菜鸟问题:系统关闭时。。。
- 很简单:点击form1.button1 ,弹出from2,仍显示form1;并且,不能对form1 再操作,直到form2执行完。
- 请教高手,奉上100分
- 很简单的问题,怎样添加类啊?
- 初学者调用WIN32 API的问题
- 线程菜问题
不过我自己目前是先用再发送那个需要分析的框架里子页面 URL 的方式解决的,反正因为缓存的关系,都是很快的。
你再分别浏览这些 URL ,就可以得到你要的所有标签文本了。虽然麻烦一点,但是至少解决了问题了。希望对你有用。
// Get the IDispatch of the document
LPDISPATCH lpDisp = NULL;
lpDisp = m_webBrowser.GetDocument();if (lpDisp)
{
IOleContainer* pContainer; // Get the container
HRESULT hr = lpDisp->QueryInterface(IID_IOleContainer,
(void**)&pContainer);
lpDisp->Release(); if (FAILED(hr))
return hr; IEnumUnknown* pEnumerator; // Get an enumerator for the frames
hr = pContainer->EnumObjects(OLECONTF_EMBEDDINGS, &pEnumerator);
pContainer->Release(); if (FAILED(hr))
return hr; IUnknown* pUnk;
ULONG uFetched; // Enumerate and refresh all the frames
for (UINT i = 0; S_OK == pEnumerator->Next(1, &pUnk, &uFetched); i++)
{
// QI for IWebBrowser here to see if we have an embedded browser
IWebBrowser2* pBrowser; hr = pUnk->QueryInterface(IID_IWebBrowser2, (void**)&pBrowser);
pUnk->Release(); if (SUCCEEDED(hr))
{
// Refresh the frame
pBrowser->Refresh();
pBrowser->Release();
}
} pEnumerator->Release();
}
NOTE: ActiveX controls hosted in an HTML page can use this technique in a similar manner. In general, an ActiveX control that accesses the unsafe WebBrowser Object Model is not safe for scripting and should implement IObjectSafety interface accordingly for security.
var
Index: Integer;
Document: IHTMLDocument2;
FrameIdx: OleVariant;
FrameDis: IDispatch;
FrameWin: IHTMLWindow2;
begin
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages; if WebBrowser1.Document = nil then Exit;
if WebBrowser1.Document.QueryInterface(IHTMLDocument2, Document) <> 0 then Exit;
if Document.frames.length > 0 then
begin
for Index := 0 to Document.frames.length - 1 do
begin
FrameIdx := Index;
FrameDis := Document.frames.item(FrameIdx);
if FrameDis.QueryInterface(IHTMLWindow2, FrameWin) <> 0 then Exit;
ShowMessage(FrameWin.document.body.outerHTML);
//FrameWin.document 就是你要的每个 Frame 的文档
end;
end;
end;参考:http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/document2/onclick.asp