如何通过 javascript 在 c# 中首次播放嵌入式 YouTube(使用 Gecko 浏览器)?

马克布朗

我目前正在创建一个 WPF 应用程序,并将 Gecko 浏览器导航到嵌入的 youtube 视频 (www.youtube.com/embed/YId_6G-YLpQ)。

到目前为止,我已经设法通过 javascript 命令执行以下操作:

  1. 使用以下方法播放暂停的视频:

document.getElementsByTagName('video')[0].play()

  1. 使用以下方法暂停视频:

document.getElementsByTagName('video')[0].pause()

但是,我第一次不知道如何开始视频。使用 play 方法不起作用。我需要通过代码而不是通过物理点击来运行它,因为它会触发调度计时器,该计时器会经常引发属性更改以返回当前视频时间。

到目前为止,我有一些肮脏的方法只是为了解决:

手动的

  1. 我手动按下播放按钮(通过用鼠标单击)
  2. 暂停视频(使用带有暂停方法的 wpf 按钮)
  3. 将时间滑块从视频的开头一直拖回
  4. 播放视频(使用 wpf 按钮和 play 方法)

它不像我想要的那样无缝,但只要我不更改视频,我只需要做一次。

半手动

  1. 创建一个名为“youTubeVideoHasStarted”的变量
  2. 播放视频方法在 'youTubeVideoHasStarted' 上执行 if,如果 true = 播放视频,如果 false = 在 YouTube 视频上执行模拟左键单击(我可能会在此处使用画布并将高度/宽度分开以获得死-center 单击视频)然后设置“youTubeVideoHasStarted = true”并在链接更改时重置后者

这是我的代码供参考

    public RelayCommand PlayYouTubeCommand { get; private set; }
    public RelayCommand PauseYouTubeCommand { get; private set; }

    public bool PlayYouTubeCanUse(object msg)
    {
        if (!YouTubeIsPlaying)
            return true;
        return false;
    }

    public void PlayYouTube(object msg)
    {
        try
        {
            using (Gecko.AutoJSContext js = new Gecko.AutoJSContext(YouTubeBrowser.Window))
            {
                js.EvaluateScript("document.getElementsByTagName('video')[0].play()");
            }
            RaisePropertyChanged("YouTubeCurrentTime");
            YouTubeIsPlaying = true;
        }
        catch { MessageBox.Show("Error playing video"); }
    }

    public bool PauseYouTubeCanUse(object msg)
    {
        if (YouTubeIsPlaying)
            return true;
        return false;
    }

    public void PauseYouTube(object msg)
    {
        try
        {
            using (Gecko.AutoJSContext js = new Gecko.AutoJSContext(YouTubeBrowser.Window))
            {
                js.EvaluateScript("document.getElementsByTagName('video')[0].pause()");
            }
            RaisePropertyChanged("YouTubeCurrentTime");
            YouTubeIsPlaying = false;
        }
        catch { MessageBox.Show("Error pausing video"); }
    }

    private GeckoWebBrowser youTubeBrowser;
    public GeckoWebBrowser YouTubeBrowser
    {
        get { return youTubeBrowser; }
        set { youTubeBrowser = value; RaisePropertyChanged("YouTubeBrowser"); }
    }

以下是使用的属性和方法列表:

https://www.w3schools.com/tags/ref_av_dom.asp

马克布朗

我用了 document.getElementsByTagName('video')[0].click()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Google Chrome浏览器的嵌入式Javascript中设置断点?

如何在Objective C中以非全屏方式从浏览器应用播放Youtube Video

您如何使嵌入式Youtube播放器静音?

如何通过单击播放按钮而非嵌入来触发YouTube视频在iOS的浏览器中播放?

使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF

如何使用JavaScript检测浏览器?

如何使用C#提高嵌入式VLC播放器的质量?

有没有办法在某些规格的Winforms C#中动态调整Gecko浏览器的大小?

作为程序员,如何报告我在Firefox中的Gecko核心浏览器引擎行为中发现的错误

如何在cshtml ASP.NET Core中调试JavaScript脚本(通过使用Chrome浏览器或Visual Studio 2019)?

如何使嵌入式 iframe 中的 YouTube 播放器正常工作而不阻止 Chrome 中的页面加载?

如何在c#中使用chrome web浏览器获取javascript的返回值

如何使用jsp或javascript在服务器上的浏览器中显示pdf

如何在浏览器的调试器中调试动态加载的JavaScript(使用jQuery)?

是否可以通过使用JavaScript在iOS 9(Safari浏览器)中隐藏URL栏?

如何使用Android版Chrome浏览器播放带有Javascript的声音通知?

如何使用fread在C中使用Web服务器在浏览器中显示图像?

为什么嵌入式YouTube视频在Google Chrome浏览器中停止运行?

如何从嵌入式pdf与浏览器进行通信

通过Javascript在浏览器中获取Android版本

通过浏览器中的JavaScript的UDP套接字

如何使用javascript使用本地存储在浏览器中存储Uint8array

在Excel Javascript API中创建嵌入式Web浏览器或iframe

如何使用javascript中pdf的字节数组在浏览器中显示pdf?

通过浏览器在外部视频播放器中打开Youtube链接

如何在 Tor 浏览器中查看 Youtube 视频?

如何像使用Firebug编辑CSS / HTML一样在浏览器中编辑javascript?

如何使用JavaScript在浏览器中禁用后退按钮

如何使用JavaScript在浏览器中呈现Word文档(.doc,.docx)?