Я кодирую небольшой инструмент предварительного просмотра видео в Delphi 2010, но я хочу отключить видео программно, потому что, как я уже сказал, он предназначен для предварительного просмотра.
Я пробовал несколько версий этого кода, но он всегда приводит к ошибке скрипта и, в конце концов, не может этого сделать.
WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
doc.parentWindow.execScript( 'document.getElementById("movie_player").mute()', 'javascript' );
Также попытался подождать немного дольше, чтобы элемент управления завершил просмотр, но все равно ничего.
Попробуйте вызвать свой код в событии TWebBrowser OnDocumentComplete. Это событие запускается, когда документ внутри полностью загружен, поэтому объект, если он ожидается, уже загружен и присутствует. Без отображения вашего кода JavaScript я больше не могу вам рассказать.
Но я бы сделал это по-другому. Я бы использовал код, подобный этому, прямо на вашей навигационной веб-странице. Он может немедленно отключить звук в обработчике события onYouTubePlayerReady, что сразу означает, когда плеер YouTube полностью загружен. Это лучше, чем вызывать функцию позже, потому что это может вызвать короткий звуковой пакет из-за некоторой задержки между завершением навигации TWebBrowser и выполнением вашего кода.
ссылка на API youtube http://code.google.com/apis/youtube/js_api_reference.html
Я считаю, что в то время, когда вы пытаетесь отключить видео, "document.getElementById(" movie_player ")" не работает ".
попробуйте назвать его как setTimeout ('document.getElementById("movie_player")', 10000); где 10000 составляет 10 секунд или даже больше, возможно, игроку требуется несколько секунд для загрузки.
Я бы также попробовал в разных браузерах, чтобы увидеть, действительно ли это что-то, что не работает в TWebBrowser.
EDIT Я бы также дал "VLC", он может воспроизводить swf файлы локально и удаленно, есть интерфейсы для библиотек VLC, так почему бы и нет? (: