2011-08-03 5 views
6

ठीक है, मैं पूरी तरह से अटक गया हूँ। मैं वास्तव में उम्मीद कर रहा हूं कि वहां से किसी को Vimeo's Froogaloop API के साथ Vimeo वीडियो लोड करने का अनुभव हो सकता है।jQuery के साथ एकाधिक Vimeo वीडियो लोड करना और घटनाओं का पता लगाना

मुझे पकड़ने के लिए 'तैयार' घटना नहीं मिल रही है।

Froogaloop:

<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 

मेरे स्क्रिप्ट:

$.getJSON('http://www.vimeo.com/api/oembed.json?url=' + encodeURIComponent('http://vimeo.com/27027307') + '&width=300&callback=?', function(data){ 
    $('#video-container').html(data.html); //puts an iframe embed from vimeo's json 
    $('#video-container iframe').ready(function(){ 
     player = document.querySelectorAll('iframe')[0]; 
     $f(player).addEvent('ready', function(id){ 
      console.log('success'); 
     }); 

    }); 
}); 

वीडियो लोड ठीक। यह संदेश मैं कंसोल में हो रही है:

Uncaught TypeError: Cannot read property 'ready' of undefined 

मैं रुक जाता है पता लगाने के लिए घटना श्रोताओं उपयोग करने की आवश्यकता है, आदि मैं this post देखा था, लेकिन दुर्भाग्य से, मुख्य अंतर यह है कि मैं JSON के माध्यम से गतिशील रूप से लोड हो रहा है कर रहा हूँ है । इसके अलावा, Vimeo में कार्रवाई में Froogaloop के working example है, लेकिन jQuery के साथ नहीं।

अग्रिम धन्यवाद !!!

+0

खेल का मैदान देखें: http://player.vimeo.com/playground – danger89

उत्तर

23

संपादित करें (अगस्त 2014): मैं हाल ही में एक jQuery Vimeo plugin, जो मूल रूप से इस समस्या को और अधिक सुंदर ढंग से हल करती है लिखा था। लेकिन समाधान, यदि आप हार्ड कोडिंग कर रहे हैं, तो यह नीचे है:

Vimeo वीडियो लोड करते समय, आपको URL में क्वेरी स्ट्रिंग &api=1 शामिल करना होगा। यह आपको एपीआई इवेंट कॉल करने की अनुमति देता है। Vimeo को &player_id=SOME_ID की आवश्यकता होती है यदि आपके पास एकाधिक वीडियो लोड होने जा रहे हैं, जिसे आईफ़्रेम लोड होने पर आईडी से मिलान करने की आवश्यकता है (या मेरे मामले में, जेएसओएन लोड होने के बाद इसे आईफ्रेम में जोड़ने के लिए jQuery का उपयोग करें, क्योंकि मैं हूं इसे गतिशील रूप से बनाते हैं।)

मुझे इस पर आधा दिन खो गया। यहां मेरा अंतिम कोड आया है, यदि यह किसी और के लिए व्यावहारिक रूप से Vimeo वीडियो लोड करने की कोशिश कर रहा है।

Vimeo के Froogaloop ढांचे

<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 

मेरी js

var videoData = [ 
{ 
    'title':'The Farm', 
    'id':'farmvideo', 
    'videoURL':'http://vimeo.com/27027307' 
}]; 

$.getJSON('http://www.vimeo.com/api/oembed.json?url=' + encodeURIComponent(videoData[0]['videoURL']) + '&api=1&player_id='+ videoData[0]['id'] +'&width=300&callback=?', function(data){ 
    $('#video-container').html(data.html); //puts an iframe embed from vimeo's json 
    $('#video-container iframe').load(function(){ 
     player = document.querySelectorAll('iframe')[0]; 
     $('#video-container iframe').attr('id', videoData[0]['id']); 
     $f(player).addEvent('ready', function(id){ 
      var vimeoVideo = $f(id); 
      console.log('success'); 
     }); 
    }); 
}); 
+2

ऊपर के लिए jQuery Vimeo प्लगइन jrue लिंक शानदार है। बस Froogaloop भूल जाओ और अगर आपके पास jQuery है तो उस प्लगइन का उपयोग करें। –

+0

यह प्लगइन फ्रूग्लोपॉप नामक खराब चीज की तुलना में कहीं बेहतर है! धन्यवाद @ jrue; – IcyFlame

+0

आपकी प्लगइन क्रोम और आईई दोनों पर एक आकर्षण की तरह काम करता है। इस प्रक्रिया को संभालने का एक आसान तरीका प्रदान करने के लिए धन्यवाद। आपको Vimeo के लिए काम करना चाहिए। – blackhawk

8

iframes के लिए तैयार ईवेंट की बजाय load ईवेंट का उपयोग करने का प्रयास करें।

तीसरी पंक्ति होगा:

$('#video-container iframe').load(function(){ 
+1

धन्यवाद, मैं इसे हल करने में सक्षम था। हालांकि यह जानना अच्छा है! – jrue

+0

यह मेरी समस्या को ठीक करता है जहां मैं एक वीडियो दिखाने और चलाने की कोशिश कर रहा था जो अभी तक लोड नहीं हुआ था। इसके लिए धन्यवाद। – jyoseph

4

मैं अपने उदाहरण "काँटेदार" और एक संस्करण एक से अधिक वीडियो froogaloop एपीआई का उपयोग कर के साथ खेल/रोक Vimeo से पता चलता बना लिया है का उपयोग करना। इसलिए यदि आप एक वीडियो शुरू करते हैं तो अन्य सभी वीडियो खेलने के लिए रोक रहे हैं: http://jsfiddle.net/nerdess/D5fD4/3/

+0

हाय @nerdess - मैंने इस कोड का उपयोग किया (धन्यवाद - बहुत अच्छा!) और एक मामूली समस्या की खोज की: यदि आप किसी मूवी को रोकते हैं, तो उसी मूवी को चलाएं, यह नहीं खेलेंगे। मैंने 'play' श्रोता ईवेंट को बदल दिया है ताकि अगर कथन अब ऐसा दिखाई दे:' if (vimeo.currentVideo! = Null && vimeo.currentVideo.element! = $ F (player_id) .element) {'जो लगता है समस्या को सही करें। –

+1

मुझे उत्सुकता है कि आप इस तथ्य को हल करने के बारे में कैसे जाएंगे कि वीडियो को प्रक्रिया में बहुत देर हो चुकी है (Uncaught TypeError: अपरिभाषित की संपत्ति 'वीडियो' नहीं पढ़ सकता) – Imperative

संबंधित मुद्दे