2013-02-11 49 views
9

को नष्ट करने और प्रारंभ करने में असमर्थ VideoJS website पर आप बताते हैं कि समर्थन स्टैक ओवरफ्लो में स्थानांतरित हो गया था, तो चलिए इसे आजमाएं। मैं निम्नलिखित कोड मिल गया है:वीडियोजेएस -

var player = _V_('the_id', {}, function(){ 
    jQuery('.remove').on('click.destroyvideojs', function(){ 
     player.destroy(); 
     jQuery(this).unbind('click.destroyvideojs'); 
    }); 
}); 

यह पहली बार वीडियो initializes और इसे नष्ट कर देता है।

लेकिन जब मैं इसे कोड के समान सटीक टुकड़े का उपयोग करके फिर से शुरू करना चाहता हूं, तो यह काम नहीं करता है। यह उसी तत्व आईडी पर स्क्रिप्ट को प्रारंभ नहीं करता है (जब इसे डीओएम से हटा दिया गया था और इसे जोड़े जाने के बाद सही प्रारंभिक कॉल के साथ फिर से जोड़ा गया)। मैं सोच रहा हूं कि यह क्यों हो रहा है?

एक और कोशिश आज:

var the_id = 'my_id'; 
var player = _V_(the_id, {}, function(){   
    player.destroy(); 
    _V_(the_id, {}, function(){ 
     alert('reinit'); 
    }); 
}); 

तो, VideoJS के फिर से प्रारंभ बस काम नहीं करता। इसके अलावा, यह अब वीडियो से नियंत्रण हटा दिया।

+0

मुझे एक ही समस्या है – dinodsaurus

उत्तर

0

ऐसा लगता है कि कॉलबैक निष्पादित होने पर player परिभाषित नहीं किया गया है। एक नजर डालें इस बेला मेरे लिए JS http://jsfiddle.net/gaboesquivel/BA8Pm/

destroy(); काम करता है पर। यह कैसे समारोह लगता है कि

destroy: function() { 
      this.stopTrackingProgress(); 
      this.stopTrackingCurrentTime(); 
      _V_.players[this.id] = null; 
      delete _V_.players[this.id]; 
      this.tech.destroy(); 
      this.el.parentNode.removeChild(this.el) 
     } 

जांच इस समाधान भी http://help.videojs.com/discussions/problems/861-how-to-destroy-a-video-js-object#comment_13544514

0

मैं अपने खरगोश के कुछ मेरे सिर से, खींच लिया बहुत तरह के सवाल सामने प्रतिक्रिया मुश्किल ... तो यहाँ मेरे समाधान है , JQuery के साथ ... समाधान प्रश्न से पैदा हुआ था कि अनियंत्रित खिलाड़ी वस्तुओं को कैसे नष्ट किया जाए, आप लोग मेरे दिन को अंत में बचाते हैं, क्योंकि हम केवल दिखाए गए खिलाड़ियों को नष्ट कर सकते हैं, और यहां तक ​​कि यदि मैं HTML को साफ़ करता हूं और गतिशील रूप से प्लेयर जेएस को पुन: प्रारंभ करता हूं फ्लैश पतन वापस बिना अवांछित मीडिया प्लेयर के लिए काम नहीं करेगा। इसलिए यहाँ समाधान है:

$.each(_V_.players, function (key, player) { 
    if (player.isReady) { player.destroy(); } 
    else { delete _V_.players[player.id]; } 
}); 

थोड़ा जटिल है, लेकिन ठीक नहीं होगा। चीयर्स!

20

मामले में यह किसी को भी मदद करता है, ऐसा लगता है कि यह संस्करण 4 में dispose है:

var player = videojs('my-video'); 
player.dispose(); 
+0

धन्यवाद! इस समस्या का हल ढूंढने में मुझे कुछ समय लगा। – Soska

+2

निपटान() विधि मार्कअप से वीडियो तत्व को हटाने के लिए प्रतीत होता है! मार्कअप से वीडियो तत्व को हटाए बिना वीडियो-जेएस प्लेयर को कैसे हटाया जा सकता है (इसलिए इसे अभी भी ब्राउज़र के डिफ़ॉल्ट HTML5 प्लेयर के माध्यम से खेला जा सकता है)। – smohadjer

+0

यह मेरे लिए काम करता है क्योंकि मैं बेहतर IE8 समर्थन के लिए प्लेयर के पुराने संस्करण पर हूं। पुराना संस्करण नष्ट() का उपयोग करता है, नवीनतम संस्करण निपटान() का उपयोग करता है, लेकिन यह सुनिश्चित नहीं करता कि आंतरिक अंतर क्या हैं। – danjah

0

API संदर्भ आपके है के लिए .dispose देख(); हालांकि यह डोम से सेटिंग्स को नहीं हटाता है। यदि आपके पास तीसरे पक्ष के प्लगइन हैं तो निपटान के बाद अन्य आइटम आपके डीओएम को कूड़ा कर सकते हैं। निपटान के चलाने के लिए और अपने डोम को साफ करने की तरह एक कोड का उपयोग इस

`dispose = function() { 
if (settings.debug) { 
    console.info('place.videojs_element.dispose()'); 
} /*Target the Player Element*/ 
var player = videojs(settings.element.id + '_player'); /*Pause Video*/ 
player.pause(); /*Wait for third party scripts to stop listening!!! <-- Important*/ 
setTimeout(function() { /*Dispose of the player*/ 
    player.dispose(); 
    /*I have a new video element waiting to be placed (this code is proprietary)*/ 
    var epi = new EPI(); 
    epi.place.videojs_element(settings, data); /*Wait time 600ms*/ 
}, 600); /*Destroy the old video element <--- Important */ 
$('#' + settings.element.id).empty(); 

} `

कार्रवाई में एक काम उदाहरण देखें: http://codepen.io/JaminQuimby/pen/yNaOwz/

ऊपर आप एक साफ डोम दे देंगे और पूरी तरह से हटाने के वीडियो प्लेयर।

5

Video.js 5.0.0 के लिए स्रोत को देखने के बाद। @ एल: 17236 आप बस निम्नलिखित कर सकते हैं:

if(videojs.getPlayers()[id]) { 
    delete videojs.getPlayers()[id]; 
} 
+0

मेरा पूर्ण नायक! –