1

Ich habe versucht, getting started HTML code einfach der DocumentText-Eigenschaft der WebBrowser-Steuerung zuzuweisen.YouTube-Video kann nicht in einem Windows.Forms.WebBrowser-Steuerelement wiedergegeben werden

<!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> 

Das gibt mir die folgenden Skriptfehler zur Laufzeit:

JavaScript Error

Es stellt sich heraus, dass auch der folgende vereinfachten Code die gleichen Fehler erzeugt:

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

es sieht so wie das WebBrowser Steuerelement ist nicht in der Lage, die Iframe-API zu laden. Was könnte das Problem hier sein? Oder wie könnte ich diesen Fehler weiter untersuchen?

+0

Können Sie Ihr Problem lösen? Ich habe dasselbe Problem wie du. –

+0

Nein, ich konnte es nicht mit dem 'WebBrowser'-Steuerelement arbeiten. Ich benutze jetzt stattdessen die Gecko-Engine (Geckofx45 Nuget-Paket). –

Antwort

1

Ich habe die Lösung für WebBrowser gefunden. Zuerst müssen wir erzwingen, dass WebBrowser mit dem neuesten IE läuft, den wir auf unserem Rechner haben, wie this. Zweitens Ich habe HTML-Stream durch ASP.NET Web API und Katana wie this, Web-Browser verwenden, um http://localhost:xxxx/api/xxxx

zu navigieren Einstellung Documenttext wird nicht funktionieren, weil WebBrowser viele Sicherheitseinschränkungen hat, wenn html lokal geladen werden.

Die andere einfache Lösung ist nur andere Browser-Engine wie Gecko oder CefSharp verwenden.

+0

Nur der erste Schritt dieser Antwort und dann webBrowser.Navigate zum eingebetteten Link von youtube funktionierte gut für mich. – Ammar