【发布时间】:2019-09-01 11:20:02
【问题描述】:
我有一个 c++ 项目,其中 2 个 WeBBrowser 在 TableLayoutPanel 中,它们并排设置,工作正常,我导航正常,但是当我转到特定网站并全屏播放视频时,我的整个显示器设置为全屏而不是仅设置 WeBBrowser 本身,而是在其他网站上完美适合 WeBBrowser。有没有办法改变它显示全屏的方式?我想让它仅在WeBBrowser 中全屏显示。我认为这与WebBrowserBase.ActiveXInstance 财产或WebBrowser.Document 财产有关。我在互联网上找到的大多数示例都是针对旧 VB 的,与 fullscreen 属性无关。
这是一个类似的问题: 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>标签元素?
【问题讨论】:
-
要查找所有
<video标签,您可能还需要查找<iframe>和<frame>元素并回避到它们中。 -
@noseratio 谢谢我查看了
<iframe>和<frame>的页面源代码,但找不到它们。我想知道 Chrome 等其他浏览器如何通过检查找到它们,但是 Chrome 不会在其页面源中显示任何这些标签,只有通过检查 Chrome 浏览器上的每个元素,我才能在大量<div>s 等下面找到<video>标签.,我敢打赌,浏览器的检查是通过 JavaScript 获取的,我真的需要在我的 c++ 项目中嵌入 JavaScript 吗?
标签: c++ .net winforms webbrowser-control