当一个页面中的iframe内容来自另外一个网站的时候,通过IHTMLFramesCollection2。item获得IHTMLWindow2指针,然后调用IHTMLWindow2::get_document获得的总是空指针。同样的情况出现在遨游浏览器的viewPage插件里。在这种情况下,viewpage得不到ifram中的链接。
同过得到ifram内容的url,再navigate(url)似乎可以,但是有没有不用再次连接的方法呢?
同过得到ifram内容的url,再navigate(url)似乎可以,但是有没有不用再次连接的方法呢?
IHTMLWindow2 *pHTMLWnd = NULL;
IHTMLDocument2 * pFrameDoc=NULL;
IHTMLFramesCollection2 *pFramesCollection=NULL;
LPDISPATCH lpDispatch;long p;
VARIANT varindex,varresult;
varresult.vt=VT_DISPATCH;
varindex.vt = VT_I4;
if(pDoc!=NULL)
{
HRESULT hr=pDoc->get_frames(&pFramesCollection);
if(SUCCEEDED(hr)&&pFramesCollection!=NULL)
{
hr=pFramesCollection->get_length(&p);
if(SUCCEEDED(hr))
for(int i=0; i<p; i++)
{
varindex.lVal = i;
if(pFramesCollection->item(&varindex, &varresult) ==S_OK)
{
lpDispatch=(LPDISPATCH)varresult.ppdispVal;
if (SUCCEEDED(lpDispatch->QueryInterface(IID_IHTMLWindow2, (LPVOID *)&pHTMLWnd)))
{
if(SUCCEEDED(pHTMLWnd->get_document( &pFrameDoc)))
{
//work with the pFrameDoc...
}
pHTMLWnd->Release();
pHTMLWnd=NULL;
}
}
}
pFramesCollection->Release();
}
pDoc->Release();
}
<iframe src="1.htm" name=iframe1>
</iframe>
</body>
<script language=javascript>
function readiframe()
{
alert(iframe1.document.body.innerHTML);
}
</script>
1.htm
<html>
<body>
</body>
</html>
这样的iframe src是另外网站的都得不到内容。 internet explorer的安全设置默认是可以跨域浏览的,而且IE也显示了,但就是通过程序得不到iframe里的内容。