- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码:
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
implementation
uses ActiveX;
procedure TForm1.Button1Click(Sender: TObject); // method 1
var
HtmlFile: string;
begin
HtmlFile := ExtractFilePath(Application.ExeName) + 'test.html';
WebBrowser1.Navigate(HtmlFile);
end;
procedure LoadHtml(wb: TWebBrowser; HTMLStr: string);
var
aStream: TMemoryStream;
begin
wb.Navigate('about:blank'); // reset the webbrowser
while wb.ReadyState < READYSTATE_INTERACTIVE do // wait to load the empty page
Application.ProcessMessages;
if Assigned(wb.Document) then
begin
aStream := TMemoryStream.Create;
try
aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr));
aStream.Seek(0, soFromBeginning);
(wb.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
finally
aStream.Free;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject); // method 2
begin
LoadHtml(WebBrowser1,
'<html><head></head><body>'+
' <object width="640" height="390"> '+
' <param name="movie" value="http://www.youtube.com/v/L7NWdxFAHdY&hl=en_US&feature=player_embedded&version=3"> '+
' </param><param name="allowFullScreen" value="true"> '+
' </param><param name="allowScriptAccess" value="always"> '+
' </param><embed src="http://www.youtube.com/v/L7NWdxFAHdY&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"> '+
' </embed></object> '+
'</body></html>'
);
end;
test.html
<object width="425" height="349">
<param name="movie" value="http://www.youtube.com/v/1hPxGmTGarM?version=3&hl=iw_IL">
</param><param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/1hPxGmTGarM?version=3&hl=iw_IL" type="application/x-shockwave-flash" width="425" height="349" allowscriptaccess="always" allowfullscreen="true">
</embed></object>
我的应用程序在两种方法中都会崩溃。我收到未处理的 win32 异常(由 Flash 播放器 Exception EInvalidOp in module Flash10u.ocx at 00108657. Invalid floating point operation
引起)。
有什么建议或修复吗?
我怎样才能捕捉到这个错误,甚至抑制它?
有没有办法通过 TWebBrowser 事件即时操作或更改 HTML,以便我可以显示图像而不是 Flash 播放器,就像广告拦截器的工作原理一样? (我的客户通过互联网在他们的网站上拥有该代码,并且我的 Delphi 应用程序提供了快速预览)
更新
我使用 TTimer 来启用/禁用 FPU(基于 Arjen 的想法):
function Get8087CW: Word; // for D5
asm
PUSH 0
FNSTCW [ESP].Word
POP EAX
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := False;
Timer1.Interval := 5000; // 5 sec
Saved8087CW := Get8087CW;
end;
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Timer1.Enabled := False;
System.Set8087CW($133F); // Disable all fpu exceptions
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Set8087CW(Saved8087CW);
end;
<小时/>
更新 (2)
我最终在应用程序启动时屏蔽了 FPU 异常。从那时起,我的申请就没有受到(已知的)影响。
最佳答案
更漂亮的解决方案:
Math.SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow,
exUnderflow, exPrecision]);
如果我正确阅读文档,Math.SetExceptionMask
沉默每 exception提到过。
但是,它只是 @Arjen 方法的更干净、更美观的版本。
关于delphi - TWebBrowser 因嵌入 Youtube 剪辑而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200581/
我的应用程序使用加载网页的 TWebBrowser。问题是,关闭包含 TWebBrowser 的表单后,使用的内存没有释放。如果我打开和关闭表单,内存只会不断增加。 看到一些关于调用 SetProce
有没有人成功地让 StreetView 显示在 TWebBrowser 控件中? 我想以编程方式构建一个 Url 并让它以简单的 Delphi 形式显示。 到目前为止,这是我对该表格的了解: unit
我正在尝试在控制台/服务类型的应用程序(没有任何窗口)中使用 TWebBrowser。 Navigate 确实在做一些事情,但它从不调用 onDocumentComplete。还有其他方法可以访问某个
我有 TWebBrowser 组件(Delphi 7),并且我从内存流加载了 HTML。页面的 HTML 代码加载良好,页面显示正确。但是,当我尝试单击任何带有地址(href 属性值)的超链接(例如“
两个简单的问题 如何将焦点设置到 TWebBrowser?这样鼠标滚轮就可以滚动显示,而不必先在 TWebBrwoser 显示区域内单击。它有一个不执行任何操作(或似乎不执行任何操作)的 setfoc
我们有 HTML: 当点击链接时 OnNewWindow2被解雇: procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppD
我在更改 twebbrowser 中文本框的值时遇到一些困难。我已经尝试过WebBrowser1.OleObject.Document.getElementById('verification_con
我在 Delphi 应用程序中使用 TWebbrowser 组件,我以编程方式加载其内容: (aWebBrowser.Document as IPersistStreamInit).
我使用 TWebBrowser 来显示 Google map 。问题是它在加载 map 时阻塞了主 ui 线程。是否可以在单独的线程中更新 map ? 编辑: RRUZ你是对的,TWebBrowser
使用 TWebBrower 如何获取撤消或重做状态(CanUndo、Can Redo)? 这总是错误的? Undo1.Enabled := HTMLDocument2Ifc.queryComman
我使用 TWebBrowser 作为用户的编辑器 GUI。我希望能够将 Web 控件插入到文档中。一个简单的例子是复选框。 (如果需要的话我可以详细说明原因)。当我第一次组装 HTML 文档(及其 S
我在 Delphi 10.2 中使用 TWebBrowser 组件,该组件是从 SHDocVW_TLB 类型库导入的。 我想使用此网络浏览器浏览本地文件和受信任环境中的文件。但我注意到,由于安全限制,
来自这个答案 CoInternetIsFeatureEnabled in Delphi2010 有谁知道如何停止滴答声。当我将它放入单独的 pas 文件时,这在 Delphi XE 中似乎不起作用。有
我有一个框架,其中包含一个 TWebBrowser 组件并被我的一些应用程序使用,我需要禁用 TWebBrowser 的默认弹出菜单。 我通过使用 TApplicationEvents 组件及其 On
我正在将 HTML 本地文件加载到 TWebBrowser如下: procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.N
如何在 firemonkey 中读取 TWebBrowser 中打开页面的源代码(RadStudio XE7 - Firemonkey for Android) 在 VCL我只是用了WebBrowse
如何知道TWebBrowser是否已经完成页面下载?我的问题是:我不知道我的页面何时完全下载以便可以显示。 我向网络浏览器请求一页,并且我只想在该页面完全下载后才显示响应。 最佳答案 您可以尝试处理
我有一个表单可以接受要拖放的文件,还有一个 TWebBrowser 控件放置在同一个表单上的 TPanel 控件上。 最主要的是,当我在窗体上放置一个文件时,它的路径被添加到一个 TEdit 控件中。
我正在使用以下单元通过显示在非模式对话框中的 TWebBrowser 来显示和打印 HTML 代码。在我的生产程序中,以下代码在 Windows-XP 下工作,但在 Windows-7 下失败(错误消
场景: 带有两个 TTabSheets 的 TPageControl 不可见标签页上的 TWebBrowser WebBrowser->在表单创建期间调用的导航 如果用户只是运行表单并退出,则在应用程
我是一名优秀的程序员,十分优秀!