You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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á

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:12:10