网页是自己写的,网页中有一个 下一连接 的连接,在网页的代码中为<a href="Next.htm">
该连接的路径并不是具体的路径,而是根据当前网页的名称,比如当前为 11.htm,那么下一个就应该是12.htm,
而不是Next.htm,所以我想在CWebBrowser2控件中实现这一功能,该如何实现呢?
在我点击 下一个连接的时候,是不是可以获取到 Next.htm,以及当前的网页名称11.htm,然后再根据
11.htm,得到12.htm,从而实现该功能,具体如何实现???
该连接的路径并不是具体的路径,而是根据当前网页的名称,比如当前为 11.htm,那么下一个就应该是12.htm,
而不是Next.htm,所以我想在CWebBrowser2控件中实现这一功能,该如何实现呢?
在我点击 下一个连接的时候,是不是可以获取到 Next.htm,以及当前的网页名称11.htm,然后再根据
11.htm,得到12.htm,从而实现该功能,具体如何实现???
我在OnBeforeNavigate2消息函数里再调用
Navigate2或者Navigate,就又会立即响应了OnBeforeNavigate2这个消息函数,
这样就一直循环 下去了,根本没法实现跳动第二页
你需要拦截当前的URL,然后重新Navigate到新链接~
当我在网页里点击 下一个连接 现在只有OnBeforeNavigate2消息能响应,
OnNewWindow3,OnNewWindow2这两个消息函数都没响应
pbCancel
A pointer to a cancel flag. An application can set this parameter to nonzero to cancel the navigation operation, or to zero to allow it to proceed.
然后再自己控制链接到新页面
{
// TODO: Add your control notification handler code here
CString url = URL->bstrVal;
if (url=="E:\\工作\\工程\\TEST\\Test1\\Next.htm")
{
url="E:\\工作\\工程\\TEST\\Test1\\0002.htm";
URL->vt = VT_BSTR;
URL->bstrVal = url.AllocSysString();
*Cancel=VARIANT_FALSE;
}
}
1、在这个消息函数里是不能再调用Navigate2,会导致无限循环
2、当前网页为"E:\\工作\\工程\\TEST\\Test1\\0001.htm",
当我点击 下一连接 时,URL参数中的值是"E:\\工作\\工程\\TEST\\Test1\\Next.htm",
然后我重新给赋了我想要的值,"E:\\工作\\工程\\TEST\\Test1\\0002.htm",
但是控件中是 无法显示网页 的提示,而这两个网页都是存在的。
再说了,那个URL的参数传进来的也是绝对路径的,
如果是用函数GetLocationURL();取得的路径修改完也是不行,真不知道是怎么回事
void CTest1Dlg::OnBeforeNavigate2ExplorerWeb(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName, VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel)
{
// TODO: Add your control notification handler code here
// CString url="file:///E:/工作/工程/TEST/Test1/0001.htm"; CString strNavUrl,strUrl,strTmp,strLocUrl;
int iNumBeg,iNumEnd;
strUrl = URL->bstrVal;
if (strUrl.IsEmpty())
{
return;
}
iNumBeg=strUrl.ReverseFind('\\');
iNumEnd=strUrl.GetLength();
strTmp = strUrl.Mid(iNumBeg+1,iNumEnd-iNumBeg-1);
if (strTmp=="Next.htm")
{
strLocUrl=m_WebBrowser.GetLocationURL();
if (strLocUrl.IsEmpty())
{
return;
}
int iNumA=strLocUrl.ReverseFind('/');
int iNumB=strLocUrl.ReverseFind('.');
CString strTemp=strLocUrl.Mid(iNumA+1,iNumB-iNumA-1);
strNavUrl=strLocUrl.Left(iNumA+1);//
int iIndex=atoi(strTemp);
strTemp.Format("%04d.htm",iIndex+1);
strNavUrl+=strTemp;//
COleVariant var;
m_WebBrowser.Navigate(strNavUrl,&var,&var,&var,&var);
*Cancel=VARIANT_TRUE;
}
}
只是不明白,为什么像10楼所述,改变了URL不能重定向