Delphi 10.4中TAdvWebBrowser内嵌Iframe视频无法全屏的问询
解决TAdvWebBrowser中IFrame视频全屏无响应的问题
可以实现视频全屏显示,你遇到的问题主要和权限配置以及控件事件处理有关,以下是具体解决步骤:
1. 修正IFrame标签的语法错误
你的HTML代码中IFrame标签未正确闭合,缺少结束的>符号,这会导致HTML解析异常,先修正代码:
var HTML:='<iframe src="'+URL+'" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" style="position:absolute;top:0;left:0;width:100%;height:100%"></iframe>'; WebBrowser.LoadHTML(HTML);
2. 配置TAdvWebBrowser的全屏权限
TAdvWebBrowser基于Chromium内核,需要明确允许全屏请求:
- 在控件的
OnBeforeCommandLineProcessing事件中,添加允许全屏的命令行参数:
procedure TForm1.WebBrowserBeforeCommandLineProcessing(Sender: TObject; const processType: string; commandLine: ICefCommandLine); begin commandLine.AppendSwitch('enable-fullscreen'); commandLine.AppendSwitch('allow-fullscreen'); end;
3. 处理控件的全屏事件
需要响应TAdvWebBrowser的OnFullscreenModeChange事件,手动处理窗口的全屏切换逻辑:
procedure TForm1.WebBrowserFullscreenModeChange(Sender: TObject; const browser: ICefBrowser; fullscreen: Boolean); begin if fullscreen then begin // 切换到全屏模式 Form1.WindowState := wsFullScreen; WebBrowser.Align := alClient; end else begin // 退出全屏模式 Form1.WindowState := wsNormal; WebBrowser.Align := alClient; // 保持控件占满窗口 end; end;
4. 确保视频源支持IFrame全屏
部分视频网站会限制IFrame中的全屏操作(比如检查top window是否同源),如果是非同源的视频URL,需要确认视频服务端是否允许IFrame嵌入并支持全屏。如果是自定义的视频页面,可以在视频页面中添加全屏权限声明:
<!-- 视频页面的HTML中添加 --> <script> document.addEventListener('fullscreenchange', function() { // 可选:同步父窗口的状态 }); </script>
内容的提问来源于stack exchange,提问作者Veronika Šupová
相关产品推荐
相关产品推荐

