我在一个WeBBrowser
中有2个TableLayoutPanel
的c ++项目,它们并排设置,可以正常导航,但是当我进入特定网站并以全屏模式播放视频时,我的整个监视器都变为全屏显示,而不是仅设置WeBBrowser
本身,但是在其他WeBBrowser
上最合适的网站上。是否可以更改全屏显示方式?我想让它仅在WeBBrowser
中全屏显示。我认为这与WebBrowserBase.ActiveXInstance
属性或WebBrowser.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>
标签元素?
答案 0 :(得分:1)
然后,我在输出中没有找到任何标签元素,只有少数网站为我提供了该元素。为什么?
让我做出有根据的猜测。对于您要参考的某些页面,DOM是动态和异步构建的。这意味着那些<video>
标签可能根本不存在。
因此,您可能需要适当的异步轮询逻辑来监视DOM的变化,尤其是寻找<video>
标签。
也许不可能提出100%可行的解决方案来涵盖所有情况,但请看一下my other post来解决这个问题。