我希望每次都能阻止iframe元素触发OnDocumentComplete事件.例如,一个页面有4个iframe,当我加载此页面时,我的OnDocumentComplete事件运行了4次.我想OnDocumentComplete为每一页只运行一次.我怎样才能做到这一点?
也许我可以删除或封锁iframes的TWebBrowser控制.
我有一个TWebBrowser对象,它在运行时创建并在后台使用,即不可见.问题是像OnDocumentComplete这样的事件在Delphi2009中不起作用或没有触发.有什么建议?
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FWebBrowser:= TWebBrowser.Create(Self);
FWebBrowser.RegisterAsBrowser:= True;
FWebBrowser.OnDocumentComplete:= WhenDocIsCompleted;
end;
procedure TfrmMain.WhenDocIsCompleted(ASender: TObject; const pDisp: IDispatch;
var URL: OleVariant);
begin
ShowMessage('Doc is completed!');
end;
Run Code Online (Sandbox Code Playgroud)
Navigate和Navigate2之间有什么区别吗?我如何在这里启用cookie?
提前致谢.
实际上我通过在我的TWebBrowser中使用index.html(使用谷歌地图显示和处理点)显示它来实际显示每2秒许多实时GPS点数(20),并且它减慢了很多我的应用程序.
因为我在同一个应用程序下有另一个模块允许我在我的数据库中输入数据,它通常会冻结我的应用程序.
我知道线程是为此而制作的,但我不确定它能解决我的问题.有任何想法吗 ???
谢谢Gwenael
PS:我从外部文件(而不是我的delphi应用程序中的源代码loadead)加载我的javascript代码,这可以减慢我的应用程序吗?
我有一个表单,其中包含一个TWebBrower加载HTML文档的组件.HTML文档上的数据每隔几秒更新一次,有时每秒更新一次,我使用以下命令更新Delphi中的值:
DOMDocument.getElementById(elementID).innerHTML := someValue;
Run Code Online (Sandbox Code Playgroud)
问题是我想锁定窗口/ webbrowser以防止它绘制/更新,直到我的所有更新都完成.有没有办法做到这一点?会打电话给
SendMessage(WebBrowser.Handle,WM_SETREDRAW,0,0);
Run Code Online (Sandbox Code Playgroud)
我希望在优化此代码方面提供一些帮助,以便我的总CPU使用率不会持续很高.
C++ Builder 2010及更高版本TCppWebBrowser与TWebBrowser组件之间有什么区别?TCppWebBrowser在帮助中没有提及,哪里TWebBrowser有常规帮助部分.
那么,我应该使用哪一个,是否有任何真正的区别?
我在twebbrowser中更改文本框的值有些困难.我尝试WebBrowser1.OleObject.Document.getElementById('verification_control_0').value := 'mytext';了一些其他方法,但它似乎没有用.
网站代码:
<div id="verification_control_0" class="verification_control">
<div class="smalltext">
What are the first 3 letters of our website's name?:<br />
<input type="text" name="register_vv[q][71]" size="30" value="" tabindex="6" class="input_text" />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果你能告诉我如何改变价值,<input type="text" name="register_vv[q][71]" size="30" value="" tabindex="6" class="input_text" />我会非常感激.感谢阅读和所有回复.
如何使用 IHTTPNegotiate 向请求添加额外的标头?我添加了接口,但函数BeginningTransaction & OnResponse永远不会被调用。
TNameSpaceHandler = class(TComObject, IInternetProtocol, IHttpNegotiate)
...
function BeginningTransaction(szURL, szHeaders: LPCWSTR; dwReserved: DWORD;
out szAdditionalHeaders: LPWSTR): HResult; stdcall;
function OnResponse(dwResponseCode: DWORD; szResponseHeaders, szRequestHeaders: LPCWSTR;
out szAdditionalRequestHeaders: LPWSTR): HResult; stdcall;
...
end;
Run Code Online (Sandbox Code Playgroud) 我对 Delphi 和 WebBrowser 组件很着迷。
我创建了一个简单的应用程序,在备忘录中输入 HTML 并在 WebBrowser 组件中显示结果。
但是,当我在 WebBrowser 内部单击时,每个 HTML 代码更新(在备忘录中)都会导致 WebBrowser 组件窃取焦点。
以下是重现问题的分步说明:
在 Memo1.OnChange 事件上插入:
if WebBrowser1.Document = nil then
begin
WebBrowser1.Navigate('about:blank');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
end;
ms := TMemoryStream.Create;
try
Memo1.Lines.SaveToStream(ms);
ms.Seek(0, 0);
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
finally
ms.Free;
end;
Run Code Online (Sandbox Code Playgroud)运行应用程序
在备忘录中输入 HTML
<html>
<body>
Hello WebBrowser
</body>
</html>
Run Code Online (Sandbox Code Playgroud)在 WebBrowser 内容中单击
我怎样才能解决这个问题并防止“窃取焦点”?
Ps.:唯一的解决方法是 …
我想使用Deplhi TWebBrowser在表单中显示“新闻”页面。新闻页面是一个简单的HTML页面,我们会不时将其上传到我们的网站,并且可能会通过各种工具输出。显示屏很好,但是我想在我的应用程序中知道自上次显示以来它是否已更改,因此理想情况下,我想获取其修改日期/时间或大小/校验和。精度并不重要,并且理想情况下不应依赖可能会失败的属性,因为使用了“简单”工具来编辑HTML文件,例如NotePad。在网上检查有几个文档修改过的java调用,但是我真的不知道从哪里开始。我浏览了Delphi的Winapi中的许多调用。WinInet单元,我看到我可以使用HTTP来获取文件以对其进行检查,但这似乎就像用大锤将核桃开裂一样。我也看不到任何文件日期时间功能,这使我觉得我缺少明显的东西。我正在使用Delphi XE5。我应该朝哪个方向看?感谢您的指导。
我们知道Internet Explorer将在Windows 10中停止使用,由新的Microsoft Edge(以前代号为"Project Spartan")取代.
有数百万的应用程序使用TWebbrowser,这是一个使用Internet Explorer API的组件.
有没有人知道这些应用程序在未来的Windows版本中如何工作?我们如何准备好让我们的应用程序在未来的Windows版本中运行?
twebbrowser ×10
delphi ×9
c++builder ×1
delphi-2009 ×1
delphi-7 ×1
delphi-xe4 ×1
focus ×1
google-maps ×1
iframe ×1
optimization ×1
runtime ×1
tdatetime ×1
urlmon ×1
vcl ×1
windows-10 ×1