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

问题描述 投票:0回答:1

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

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

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

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

  1. 暂停视频使用:

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

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

到目前为止,我仅有一些肮脏的方法可以解决:

手册

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

这不是我想要的那样无缝,但前提是我不更改视频,我只需要这样做一次。

半手动

  1. 创建一个名为“ youTubeVideoHasStarted”的变量
  2. [播放视频方法会对'youTubeVideoHasStarted'执行if操作,如果为true =播放视频,如果为false =在YouTube视频上执行模拟的左键单击(我可能会在此处使用画布,然后将高度/宽度除以单击视频上的死角),然后设置“ youTubeVideoHasStarted = true”,如果链接已更改,则重置后者[]
  3. 这是我的代码供参考

    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

我目前正在创建WPF应用,并使用Gecko浏览器导航到嵌入式youtube视频(www.youtube.com/embed/YId_6G-YLpQ)。到目前为止,我已经设法通过javascript ...

c# wpf geckofx
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.