如何更改WebBrowser全屏视频模式?

时间:2019-04-10 22:14:24

标签: c++ .net winforms webbrowser-control

我在一个WeBBrowser中有2个TableLayoutPanel的c ++项目,它们并排设置,可以正常导航,但是当我进入特定网站并以全屏模式播放视频时,我的整个监视器都变为全屏显示,而不是仅设置WeBBrowser本身,但是在其他WeBBrowser上最合适的网站上。是否可以更改全屏显示方式?我想让它仅在WeB​Browser中全屏显示。我认为这与Web​Browser​Base.​Active​XInstance属性或Web​Browser.​Document属性有关。我在互联网上找到的大多数示例都是针对旧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>标记元素:< / p>

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

因此,您可能需要适当的异步轮询逻辑来监视DOM的变化,尤其是寻找<video>标签。

也许不可能提出100%可行的解决方案来涵盖所有情况,但请看一下my other post来解决这个问题。