在 C# 应用程序中暂停 WebBrowser 动画

问题描述 投票:0回答:1

我们使用 WebBrowser 组件将 Web 浏览器“嵌入”到我们的信息亭应用程序中。服务工程师使用该组件来测试互联网,但他们也可以登录服务面板来记录工作详细信息。

不幸的是,我们被要求使用的默认网页(我们公司的网站)充满了令人讨厌的动画和巨大的循环视频,这导致我们低端硬件上的 CPU 使用率飙升(营销,被诅咒了!)。

Microsoft 文档说要调用

WebBrowser::Stop
,但这只会短暂暂停动画,然后动画会再次启动。

  • 动画或循环视频可以关闭吗?
  • 是否可以告诉 WebBrowser 组件以某种“轻量级”模式运行,永久暂停动画或渲染大视频(可能只显示视频的第一帧并永久暂停动画)?
c# webbrowser-control visual-studio-2022
1个回答
0
投票

您可以通过修改 C# 代码以将 JavaScript 脚本插入 html 来实现此目的。这是一个展示如何执行此操作的示例。

首先,编写一个事件,将脚本注入到html中以停止视频和动画:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.Document != null) { string script = @" var video = document.getElementById('myVideo'); video.pause(); var box = document.querySelector('.box'); var animationState = window.getComputedStyle(box).getPropertyValue('animation-play-state'); box.style.animationPlayState = 'paused'; "; webBrowser1.Document.InvokeScript("execScript", new object[] { script, "JavaScript" }); } }
然后,不要忘记在代码的初始化部分绑定此事件,如下所示:

public Form1() { InitializeForm();   webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); }
    
© www.soinside.com 2019 - 2024. All rights reserved.