В настоящее время я создаю приложение WPF, и браузер Gecko перешел на встроенное видео на YouTube (www.youtube.com/embed/YId_6G-YLpQ).
До сих пор мне удалось выполнить следующие команды javascript:
- Воспроизвести приостановленное видео, используя:
документ .getElementsByTagName ('video') [0] .play ()
Приостановить видео, используя:
document.getElementsByTagName ('video') [0] .pause ()
Однако я не смог выяснить, как я могу начать видео в самый первый раз. Использование метода воспроизведения не работает. Мне нужно запустить его через код, а не через физический щелчок, так как он вызовет таймер отправки, который будет часто вызывать измененное свойство, чтобы вернуть текущее время видео.
Пока у меня есть несколько грязных подходов просто чтобы получить:
Ручной
- Я вручную нажимаю кнопку воспроизведения (щелкая по ней мышью)
- Пауза видео (используя кнопку wpf с методом паузы)
- Перетащите ползунок времени назад от начала видео
- Воспроизведите видео (используя кнопку wpf с методом воспроизведения)
Это не совсем так, как я хотел, но при условии, что я не меняю видео, я должен сделать это только один раз.
Полуавтомат
- Создайте переменную с именем 'youTubeVideoHasStarted'
- Метод воспроизведения видео делает if на 'youTubeVideoHasStarted', если true = воспроизводить видео, если false = выполнять симулированный щелчок левой кнопкой мыши на YouTube видео (я, вероятно, нас Здесь можно просмотреть и просто разделить высоту и ширину, чтобы получить клик на видео в мертвой точке), затем установить '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