cefsharp 从 C# 执行 Javascript

cefsharp execute Javascript from C#

我正在尝试在我的 windows 表单应用程序中播放在线视频。我可以成功播放视频,但我想让它全屏播放。

url是这样的:

http://www.mitele.es/msplayer/popup/?editorialId=231609

我一直在检查网站,我发现展开按钮的代码是这样的:

<button ng-if="fullScreenBtIf" class="fullscreen-bt msplayer-icon-fullscreen ng-scope" title="Pantalla completa" ng-click="toggleFullscreen()" ms-skin-button="" style="color: rgb(5, 187, 237); opacity: 1;"><span class="screen-reader-text">Ir a pantalla completa</span>
</button>

CEFsharp 工作正常,因为我已经用警报对其进行了测试:

myBrowser.ExecuteScriptAsync("alert('test');");

我尝试通过以下方式扩展视频播放器:

myBrowser.ExecuteScriptAsync("toggleFullscreen();"); 

但是我知道 toggleFullScreen 是未定义的。你有什么想法来实现这个目标吗?

您的问题属于范围问题之一,但无论如何在没有用户输入的情况下无法全屏显示。打开您链接的视频,打开浏览器控制台,然后 运行 这个...

MSPlayer.scopes[Object.keys(MSPlayer.scopes)[0]].toggleFullscreen();

它在正确的范围内执行函数,但也会向您解释为什么它不能 运行。

在Chrome...

Failed to execute 'requestFullScreen' on 'Element': API can only be initiated by a user gesture.

但是,由于这是一个 Windows 表单应用程序,您可以使表单在 运行 时最大化,并将 webview 停靠在表单上以使 html 页面完整屏幕,然后注入以下脚本来调整视频大小...

$("div").eq(0).css({
    position: "absolute",
    top:0,
    left:0,
    width:"100%",
    height:"100%"
});

这将使视频适合已经最大化的页面和表单。