Ich habe ein verstecktes Div, das ein YouTube-Video in einem enthält <iframe>
. Wenn der Benutzer auf einen Link klickt, wird dieses Div sichtbar. Der Benutzer sollte dann in der Lage sein, das Video abzuspielen.
Wenn der Benutzer das Bedienfeld schließt, sollte die Wiedergabe des Videos gestoppt werden. Wie kann ich das erreichen?
Code:
<!-- link to open popupVid -->
<p><a href="javascript:;" onClick="document.getElementById('popupVid').style.display='';">Click here</a> to see my presenting showreel, to give you an idea of my style - usually described as authoritative, affable and and engaging.</p>
<!-- popup and contents -->
<div id="popupVid" style="position:absolute;left:0px;top:87px;width:500px;background-color:#D05F27;height:auto;display:none;z-index:200;">
<iframe width="500" height="315" src="http://www.youtube.com/embed/T39hYJAwR40" frameborder="0" allowfullscreen></iframe>
<br /><br />
<a href="javascript:;" onClick="document.getElementById('popupVid').style.display='none';">
close
</a>
</div><!--end of popupVid -->
Antworten:
Der einfachste Weg, dieses Verhalten zu implementieren, besteht darin , bei Bedarf die Methoden
pauseVideo
und aufzurufenplayVideo
. Inspiriert vom Ergebnis meiner vorherigen Antwort habe ich eine Plugin-freie Funktion geschrieben, um das gewünschte Verhalten zu erzielen.Die einzigen Anpassungen:
toggleVideo
?enablejsapi=1
die URL von YouTube hinzugefügt , um die Funktion zu aktivierenDemo: http://jsfiddle.net/ZcMkt/
Code:
quelle
?enablejsapi=1
URL zum Einbetten des Iframes wie<iframe class="embed-responsive-item" src="//www.youtube.com/embed/WIZUeIDFALw?html5=1&enablejsapi=1" allowfullscreen></iframe>
folgtHier ist eine jQuery-Version von RobWs Antwort zum Ausblenden / Anhalten eines Iframes in einem modalen Fenster:
Die HTML-Elemente, auf die Bezug genommen wird, sind das modale div selbst (# video-div), das die show / hide-Methoden aufruft, und der iframe (# video-iframe), dessen Video-URL src = "" lautet und das Suffix enablejsapi = 1 hat ? Dies ermöglicht die programmgesteuerte Steuerung des Players (z.
Weitere Informationen zum HTML finden Sie in der Antwort von RobW.
quelle
Hier ist ein einfaches jQuery-Snippet, mit dem alle Videos auf der Seite angehalten werden können, basierend auf den Antworten von RobW und DrewT:
quelle
{"event":"command","func":"playVideo","args":[],"id":1,"channel":"widget"}
nach{"event":"listening","id":1,"channel":"widget"}
dem ist , was YT.Player iframe api Posting auf youtube einbetten.Hey, ein einfacher Weg ist es, einfach den src des Videos auf nichts zu setzen, so dass das Video verschwindet, während es versteckt ist, und dann den src wieder auf das gewünschte Video zurückzusetzen, wenn Sie auf den Link klicken, der das Video öffnet das setzt einfach eine id auf den youtube iframe und ruft die src funktion mit dieser id wie folgt auf:
quelle
iframe
‚ssrc
mit Javascript wird auf versehentlich drückenwindow.history
, wodurch Back Button Fragen.Da Sie
?enablejsapi=true
den src des iframe festlegen müssen, bevor Sie die in anderen Antworten genanntenplayVideo
/pauseVideo
-Befehle verwenden können , kann es hilfreich sein, dies programmgesteuert über Javascript hinzuzufügen (insbesondere, wenn Sie beispielsweise möchten, dass dieses Verhalten auf von anderen eingebettete Videos angewendet wird Nutzer, die gerade einen YouTube-Einbettungscode ausgeschnitten und eingefügt haben). In diesem Fall könnte so etwas nützlich sein:... wenn Sie dies aufrufen, werden
document.ready
alle Iframes in einem Div mit einer Klasse von "Video"enablejsapi=true
zu ihrer Quelle hinzugefügt, sodass die Befehle playVideo / pauseVideo auf ihnen arbeiten können.(In diesem Beispiel wird jQuery für die eine festgelegte Zeile verwendet
var iframes
, aber der allgemeine Ansatz sollte mit reinem Javascript genauso gut funktionieren, wenn Sie jQuery nicht verwenden.)quelle
Sie können das Video stoppen, indem Sie die
stopVideo()
Methode auf der YouTube-Player-Instanz aufrufen , bevor Sie das div ausblenden, zWeitere Informationen finden Sie hier: http://code.google.com/apis/youtube/js_api_reference.html#Playback_controls
quelle
RobWs Weg hat für mich großartig funktioniert. Für Leute, die jQuery verwenden, ist hier eine vereinfachte Version, die ich letztendlich verwendet habe:
In diesem Beispiel ist "video_player" ein übergeordnetes Div, das den Iframe enthält.
quelle
Ich wollte eine Lösung mit jQuery teilen, die funktioniert, wenn mehrere YouTube-Videos auf einer Seite eingebettet sind. In meinem Fall habe ich für jedes Video ein modales Popup wie folgt definiert:
In diesem Fall repräsentiert videoModalXX eine eindeutige ID für das Video. Die folgende Funktion stoppt dann das Video:
Ich mag diesen Ansatz, weil das Video dort angehalten bleibt, wo Sie aufgehört haben, falls Sie zurückgehen und später weitersehen möchten. Es funktioniert gut für mich, weil es nach dem Iframe im Videomodal mit einer bestimmten ID sucht. Es ist keine spezielle YouTube-Element-ID erforderlich. Hoffentlich wird dies auch jemand nützlich finden.
quelle
entferne einfach src von iframe
quelle
Die Antwort von Rob W hat mir geholfen herauszufinden, wie ich ein Video über dem Iframe anhalten kann, wenn ein Schieberegler ausgeblendet ist. Ich brauchte jedoch einige Änderungen, bevor ich es zum Laufen bringen konnte. Hier ist ein Ausschnitt aus meinem HTML:
Beachten Sie, dass dies auf localhosts funktioniert und auch, wie Rob W erwähnte, " enablejsapi = 1 " am Ende der Video-URL hinzugefügt wurde.
Folgendes ist meine JS-Datei:
Schauen Sie sich dies als einfacheres Beispiel auch in JSFiddle an
quelle
Dieser Ansatz erfordert jQuery. Wählen Sie zunächst Ihren Iframe aus:
Jetzt wählen Sie die Schaltfläche Wiedergabe / Pause dieses Iframes und klicken darauf
Ich hoffe es hilft dir.
quelle
RobWs Antworten hier und anderswo waren sehr hilfreich, aber ich fand meine Bedürfnisse viel einfacher. Ich habe dies an anderer Stelle beantwortet , aber vielleicht ist es auch hier nützlich.
Ich habe eine Methode, mit der ich eine HTML-Zeichenfolge bilde, die in eine UIWebView geladen werden soll:
Sie können das Styling-Zeug in der prepareHTML-Zeichenfolge ignorieren. Die wichtigen Aspekte sind:
Wenn ich das Video anhalten muss, starte ich Folgendes:
Hoffentlich hilft das!
quelle
Das funktioniert gut mit dem YT-Player
this.youtube.player.pauseVideo ();
quelle
Eine präzisere, elegantere und sicherere Antwort: Fügen Sie am Ende der Video-URL "? Enablejsapi = 1" hinzu und erstellen und stringifizieren Sie dann ein gewöhnliches Objekt, das den Befehl pause darstellt:
Verwenden Sie die
Window.postMessage
Methode, um die resultierende JSON-Zeichenfolge an das eingebettete Videodokument zu senden:Stellen Sie sicher, dass Sie die Video-URL für das Argument der
Window.postMessage
Methode angeben,targetOrigin
um sicherzustellen, dass Ihre Nachrichten nicht an einen unbeabsichtigten Empfänger gesendet werden.quelle