我们使用 WebBrowser 组件将 Web 浏览器“嵌入”到我们的信息亭应用程序中。服务工程师使用该组件来测试互联网,但他们也可以登录服务面板来记录工作详细信息。
不幸的是,我们被要求使用的默认网页(我们公司的网站)充满了令人讨厌的动画和巨大的循环视频,这导致我们低端硬件上的 CPU 使用率飙升(营销,被诅咒了!)。
Microsoft 文档说要调用
WebBrowser::Stop
,但这只会短暂暂停动画,然后动画会再次启动。
您可以通过修改 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);
}