Bir youtube videosunun oynatılması bittiğinde nasıl tespit edilir?


94

Bir ton gömülü youtube videosu olan bir site üzerinde çalışıyorum, müşteri bir videonun gösterilmesi durduğunda bir pop-up göstermek istiyor.

Youtube api'sine baktım ve bir videonun ne zaman bittiğini anlamanın bir yolu var gibi görünüyor:

http://code.google.com/apis/youtube/js_api_reference.html

ancak videoların tümü zaten sitede olduğundan (yerleştirme kodunu yapıştırarak manuel olarak eklenen binlerce) bu sayfada bahsettikleri gibi videoları yerleştiremiyorum.

Mevcut videolardan herhangi birini değiştirmeden (javascript kullanarak) bu videoların sonunu tespit etmenin bir yolu var mı?


2
Önerebileceğim tek şey, yerleştirme girişlerini dahil edilecek şekilde programlı olarak değiştirmektir enablejsapi=1. Bir veritabanında iseler, srcözniteliği değiştirmek oldukça kolay olmalıdır . Statik olarak HTML dosyalarına eklenmişlerse bazı normal ifadelere ihtiyacınız olabilir.
indir

Yanıtlar:


176

Bu, youtube oynatıcı API'si aracılığıyla yapılabilir:

http://jsfiddle.net/7Gznb/

Çalışma örneği:

    <div id="player"></div>

    <script src="http://www.youtube.com/player_api"></script>

    <script>

        // create youtube player
        var player;
        function onYouTubePlayerAPIReady() {
            player = new YT.Player('player', {
              width: '640',
              height: '390',
              videoId: '0Bmhjf0rKe8',
              events: {
                onReady: onPlayerReady,
                onStateChange: onPlayerStateChange
              }
            });
        }

        // autoplay video
        function onPlayerReady(event) {
            event.target.playVideo();
        }

        // when video ends
        function onPlayerStateChange(event) {        
            if(event.data === 0) {          
                alert('done');
            }
        }

    </script>

1
Bunu bir sayfadaki birden fazla videoyla nasıl bütünleştirdiniz?
motoxer4533

@ motoxer4533 iyi, aynı sayfada birden fazla videoyla uğraşmak zorunda kalmadım, ancak sayfa başına yalnızca bir tane. API'nin birden fazla oyuncunun oluşturulmasına ve bunların ayrı uç noktalarının algılanmasına izin verip vermediğinden emin değilim.
TK123

1
birden fazla oyuncu için kurulumu zor olmamalı - sadece birden fazla var player1, var player2, var player 3 vb. kurun ve ardından kurulum kodunu birden çok kez çalıştırın - her yeni değişkenle
codeguy

Ayrıca iframe
api'sini

3
Okunabilirlik için, durumu kontrol ederken YT.PlayerState.ENDED'i tavsiye ederim.
Bart Burg

-7

Yapmak isteyebileceğiniz şey, aşağıdakileri yapan tüm sayfalara bir komut dosyası eklemektir ... 1. youtube-iframe'i bulun: başlığa göre genişlik ve yüksekliğe göre arayın veya kaynağında www.youtube.com'u bularak. Bunu şu şekilde yapabilirsiniz ... - window.frames'te bir for-in döngüsü ile döngü yaparak ve ardından özelliklere göre filtreleyerek

  1. jscript'i, onYoutubePlayerReady must-include-işlevini ekleyerek mevcut sayfanın iframe'ine ekleyin http://shazwazza.com/post/Injecting-JavaScript-into-other-frames.aspx

  2. Etkinlik dinleyicilerini vb. Ekleyin.

Bu yardımcı olur umarım


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.