1

我試圖簡化WebBrowser控件的DocumentText屬性的下列getting started HTML code無法讓YouTube視頻在Windows.Forms.WebBrowser控件中播放

<!DOCTYPE html> 
<html> 
    <body> 
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. --> 
    <div id="player"></div> 

    <script> 
     // 2. This code loads the IFrame Player API code asynchronously. 
     var tag = document.createElement('script'); 

     tag.src = "https://www.youtube.com/iframe_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

     // 3. This function creates an <iframe> (and YouTube player) 
     // after the API code downloads. 
     var player; 
     function onYouTubeIframeAPIReady() { 
     player = new YT.Player('player', { 
      height: '390', 
      width: '640', 
      videoId: 'M7lc1UVf-VE', 
      events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange 
      } 
     }); 
     } 

     // 4. The API will call this function when the video player is ready. 
     function onPlayerReady(event) { 
     event.target.playVideo(); 
     } 

     // 5. The API calls this function when the player's state changes. 
     // The function indicates that when playing a video (state=1), 
     // the player should play for six seconds and then stop. 
     var done = false; 
     function onPlayerStateChange(event) { 
     if (event.data == YT.PlayerState.PLAYING && !done) { 
      setTimeout(stopVideo, 6000); 
      done = true; 
     } 
     } 
     function stopVideo() { 
     player.stopVideo(); 
     } 
    </script> 
    </body> 
</html> 

這給了我下面的腳本運行時錯誤:

JavaScript Error

事實證明,即使下面的簡化代碼產生了同樣的錯誤:

webBrowser1.DocumentText = "<!DOCTYPE html><html><body><script src='https://www.youtube.com/iframe_api'></script></body></html>"; 

所以看起來如WebBrowser控件無法加載iframe-API。這裏可能是什麼問題?或者我怎麼能進一步調查這個錯誤?

+0

你能解決你的問題嗎?我和你的問題一樣。 –

+0

不,我不能讓它與'WebBrowser'控件一起工作。我現在使用Gecko引擎(Geckofx45 Nuget包)。 –

回答

1

我找到了WebBrowser的解決方案。首先,我們必須強制WebBrowser運行最新的IE,我們在我們的機器上有如this。 其次,我有過的ASP.NET Web API和武士刀像this以流HTML,使用web瀏覽器導航到http://localhost:xxxx/api/xxxx

設置DocumentText不會起作用,因爲web瀏覽器本地加載HTML時,有許多安全限制。

另一個簡單的解決方案是使用其他瀏覽器引擎,如Gecko或CefSharp。

+0

只有這個答案的第一步,然後webBrowser.Navigate到youtube的嵌入式鏈接工作得很好。 – Ammar