Làm thế nào để phát hiện khi một video youtube phát xong?


93

Tôi đang làm việc trên một trang web có rất nhiều video youtube được nhúng, khách hàng muốn hiển thị cửa sổ bật lên bất cứ khi nào video ngừng phát.

Tôi đã xem api youtube và dường như có một cách để phát hiện thời điểm video kết thúc:

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

nhưng tôi không thể nhúng các video như họ đã đề cập trên trang đó vì tất cả các video đều đã có trên trang web (hàng nghìn video đã được thêm theo cách thủ công bằng cách dán mã nhúng).

Có cách nào để phát hiện phần cuối của những video này mà không thay đổi bất kỳ video nào hiện có (sử dụng javascript) không?


2
Điều duy nhất tôi có thể đề xuất là thay đổi theo chương trình các mục nhúng để đưa vào enablejsapi=1. Nếu chúng nằm trong cơ sở dữ liệu thì việc thay đổi srcthuộc tính sẽ khá dễ dàng . Bạn có thể cần một số regex nếu chúng được chèn tĩnh vào các tệp HTML.
tải xuống

Câu trả lời:


175

Điều này có thể được thực hiện thông qua API trình phát youtube:

http://jsfiddle.net/7Gznb/

Ví dụ làm việc:

    <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
Làm thế nào bạn tích hợp điều này với nhiều video trên một trang?
motoxer4533, 30-07-12

@ motoxer4533 à, tôi không phải xử lý nhiều video trên cùng một trang mà chỉ có một video trên mỗi trang. Không chắc liệu API có cho phép tạo nhiều người chơi và phát hiện các điểm cuối riêng lẻ của họ hay không.
TK123 30/07/12

1
không nên khó có thể thiết lập cho nhiều người chơi - chỉ cần thiết lập nhiều var player1, var player2, var chơi 3 vv sau đó chạy các mã cài đặt nhiều lần - với mỗi var mới
codeguy

Cũng là một ví dụ đầy đủ làm một cái gì đó tương tự bằng cách sử dụng api iframe đây developers.google.com/youtube/...
JeremyWeir

3
Để dễ đọc, tôi khuyên YT.PlayerState.ENDED khi kiểm tra trạng thái.
Bart Burg

-6

Những gì bạn có thể muốn làm là bao gồm một tập lệnh trên tất cả các trang thực hiện như sau ... 1. tìm youtube-iframe: tìm kiếm nó theo chiều rộng và chiều cao theo tiêu đề hoặc bằng cách tìm www.youtube.com trong nguồn của nó. Bạn có thể làm điều đó bằng cách ... - lặp qua window.frames bằng một vòng lặp for-in và sau đó lọc ra theo các thuộc tính

  1. đưa jscript vào iframe của trang hiện tại thêm chức năng onYoutubePlayerReady must-include- http: //shazwazza.com/post/Injecting-JavaScript-into-other-frames.aspx

  2. Thêm người nghe sự kiện, v.v.

Hi vọng điêu nay co ich


1
không chắc chắn nếu điều này có thể do quy tắc cross-domain
Asher Garland
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.