如何更改 WebBrowser 全屏视频模式?
How to change WebBrowser fullscreen video mode?
我有一个 c++ 项目,在 TableLayoutPanel
中有 2 个 WeBBrowser
它们并排设置,工作正常我导航正常但是当我去特定网站并全屏播放视频时这将我的整个显示器设置为全屏,而不是仅设置 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>
标签元素:
System::Diagnostics::Debug::Write(webBrowser1->DocumentText);
然后我在输出中没有找到任何 <video>
标记元素,只有少数网站提供了。为什么?如何在 C++ 中正确获取和操作 <video>
标签元素?
Then I didn't find any tag element in the output, only a few websites provide me that. Why?
让我做一个有根据的猜测。对于您所指的某些页面,DOM 是动态和异步构建的。这意味着,那些 <video>
标签可能还不存在。
因此,您可能需要一些异步轮询逻辑来监控 DOM 变化,特别是寻找 <video>
标签。
可能无法提出一个 100% 有效的解决方案来涵盖所有情况,但请查看解决此问题的 my other post。
我有一个 c++ 项目,在 TableLayoutPanel
中有 2 个 WeBBrowser
它们并排设置,工作正常我导航正常但是当我去特定网站并全屏播放视频时这将我的整个显示器设置为全屏,而不是仅设置 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>
标签元素:
System::Diagnostics::Debug::Write(webBrowser1->DocumentText);
然后我在输出中没有找到任何 <video>
标记元素,只有少数网站提供了。为什么?如何在 C++ 中正确获取和操作 <video>
标签元素?
Then I didn't find any tag element in the output, only a few websites provide me that. Why?
让我做一个有根据的猜测。对于您所指的某些页面,DOM 是动态和异步构建的。这意味着,那些 <video>
标签可能还不存在。
因此,您可能需要一些异步轮询逻辑来监控 DOM 变化,特别是寻找 <video>
标签。
可能无法提出一个 100% 有效的解决方案来涵盖所有情况,但请查看解决此问题的 my other post。