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

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

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

这是一个类似的问题:WebBrowser control video element enter fullscreen

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

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>标签元素?

c++ .net winforms webbrowser-control
1个回答
1
投票

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

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

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

可能无法提出100%的工作解决方案来涵盖所有情况,但请查看处理此问题的my other post

© www.soinside.com 2019 - 2024. All rights reserved.