如何更改网络浏览器全屏视频模式?

How to change WebBrowser fullscreen video mode?

本文关键字:视频模式 浏览器 何更改 网络      更新时间:2023-10-16

我有一个 c++ 项目,TableLayoutPanel有 2 个WeBBrowser,它们并排设置,它工作正常,我导航正常,但是当我去特定网站并全屏播放视频时,将我的整个显示器设置为全屏,而不是仅设置WeBBrowser本身,但是在其他网站上非常适合WeBBrowser。有没有办法改变它全屏显示的方式?我想让它只在WeB​Browser中全屏显示。我认为这与Web​Browser​Base.​Active​XInstance财产或Web​Browser.​Document财产有关。我在互联网上找到的大多数示例都是针对旧 VB 的,与全屏属性无关。

这里有一个类似的问题: 网页浏览器控制视频元素进入全屏

在其他示例中,我看到了一种通过执行以下操作来提取元素的方法:

HtmlElement^  object = webBrowser1->Document->GetElementById("video");

但是我不知道如何处理该代码以格式化该视频,然后将其设置回修复全屏模式的WeBBrowser

编辑:

我走得更远,我可以从几个网站获得<video>元素,这是我的方法:

private: System::Void webBrowser1_DocumentCompleted(System::Object^  sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^  e) {
HtmlElementCollection^  videoElements = webBrowser1->Document->GetElementsByTagName("video");
videoElements[0]->SetAttribute("style", "width: 640px; height: 480px;"); //Not sure if this is a proper way to set an attribute in this element.
}

问题在于,并非每个网站都允许您访问<video>标签元素,因此对于这些网站,我执行了以下代码以确保源代码中确实没有<video>标签元素:

System::Diagnostics::Debug::Write(webBrowser1->DocumentText);

然后我在输出中没有找到任何<video>标签元素,只有少数网站为我提供了。为什么?如何在 c++ 中真正正确获取和操作<video>标签元素?

然后我在输出中没有找到任何标签元素,只有少数网站为我提供了这个元素。为什么?

让我做一个有根据的猜测。对于您引用的某些页面,DOM 是动态和异步构建的。这意味着,这些<video>标签可能根本不存在。

因此,您可能需要一些异步轮询逻辑来监视 DOM 更改,特别是查找<video>标记。

可能无法提出 100% 的工作解决方案来涵盖所有情况,但请查看我处理此问题的其他帖子。