我目前正在创建WPF应用,并使用Gecko浏览器导航到嵌入式youtube视频(www.youtube.com/embed/YId_6G-YLpQ)。
到目前为止,我已经设法通过javascript命令执行以下操作:
document.getElementsByTagName('video')[0] .play()
document.getElementsByTagName('video')[0] .pause()
但是,我不知道如何第一次开始播放视频。使用播放方法不起作用。我需要通过代码而不是通过物理点击来运行它,因为它会触发调度计时器,该计时器将频繁地将属性更改为返回当前视频时间。
到目前为止,我仅有一些肮脏的方法可以解决:
手册
这不是我想要的那样无缝,但前提是我不更改视频,我只需要这样做一次。
半手动
这是我的代码供参考
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 ...
我使用了document.getElementsByTagName('video')[0].click()