WeG*_*ars 3 delphi twebbrowser
我正在尝试使用Browser.Navigate(URL)将网页加载到TWebBrowser中.但是,浏览器不会关心页面是否在线更新,所以只要我不重启程序就不会显示新页面.
一个更具体的例子:如果我导航到具有访问者计数器(作为图像)的网页,计数器将递增.如果我离开那个页面,然后我返回(不使用Back),计数器将不会递增.在Firefox中,它会增加.
这是我尝试过的,不会起作用:
const
DLCTL_PRAGMA_NO_CACHE = $00004000;
procedure TBrowserFrm.LoadURL(URL: string);
var
Flag: OleVariant;
begin
Flag:=DLCTL_PRAGMA_NO_CACHE;
Browser.Navigate(URL, Flag);
end;
procedure TBrowserFrm.LoadURL(URL: string);
var
Flags: OleVariant;
begin
Flags := 'navNoHistory, navNoReadFromCache, navNoWriteToCache';
Browser.navigate2(URL, Flags);
end;
Run Code Online (Sandbox Code Playgroud)
有关如何使TWebBrowser加载真实页面的任何想法?
在VCL中,TWebBrowser是Internet Explorer的包装器,特别是IWebBrowser2接口.
DLCTL_PRAGMA_NO_CACHE是不是可以传递给一个标志Navigate2().阅读文档:
TWebBrowser从Microsoft的Shell Doc对象和控件库(SHDOCVW.DLL)中包装IWebBrowser2接口,以允许您创建自定义Web浏览应用程序或向应用程序添加Internet,文件和网络浏览,文档查看和数据下载功能.
Flags [in]指向VT_I4或VT_I2类型的VARIANT的指针,指定BrowserNavConstants枚举定义的值的组合.
typedef enum BrowserNavConstants {
navOpenInNewWindow = 0x1,
navNoHistory = 0x2,
navNoReadFromCache = 0x4,
navNoWriteToCache = 0x8,
navAllowAutosearch = 0x10,
navBrowserBar = 0x20,
navHyperlink = 0x40,
navEnforceRestricted = 0x80,
navNewWindowsManaged = 0x0100,
navUntrustedForDownload = 0x0200,
navTrustedForActiveX = 0x0400,
navOpenInNewTab = 0x0800,
navOpenInBackgroundTab = 0x1000,
navKeepWordWheelText = 0x2000,
navVirtualTab = 0x4000,
navBlockRedirectsXDomain = 0x8000,
navOpenNewForegroundTab = 0x10000
} BrowserNavConstants;
Run Code Online (Sandbox Code Playgroud)
如您所见,DLCTL_PRAGMA_NO_CACHE不在该列表中.它实际上是在为浏览器DISPID_AMBIENT_DLCONTROL属性实现处理程序时指定为输出值的标志.阅读MSDN文档:
WebBrowser Control使您可以控制下载,显示和执行的内容.要获得此控制,您需要实现主机的IDispatch,以便它处理DISPID_AMBIENT_DLCONTROL.实例化WebBrowser控件时,它将使用此ID调用IDispatch :: Invoke.使用按位OR运算符将pvarResult设置为以下标志的组合,以指示您的首选项.
...
•DLCTL_RESYNCHRONIZE和DLCTL_PRAGMA_NO_CACHE:这些标志导致缓存刷新.使用DLCTL_RESYNCHRONIZE,将要求服务器提供更新状态.如果服务器指示缓存的信息是最新的,则将使用缓存文件.使用DLCTL_PRAGMA_NO_CACHE,无论文件的更新状态如何,都将从服务器重新下载文件.
...
因此,您必须实现自定义IDispatch对象并将其挂钩IWebBrowser2才能DLCTL_PRAGMA_NO_CACHE正确使用.
或者,您可以考虑切换到TEmbeddedWB,为您处理浏览器自定义,并具有DownloadOptions接受DLCTL...标志的属性,包括DLCTL_PRAGMA_NO_CACHE.
| 归档时间: |
|
| 查看次数: |
7826 次 |
| 最近记录: |