2012-10-08 25 views
6

अद्यतन: इस प्रश्न का आधार गुमराह हो गया। समस्या तब तक नहीं होती जब तक कि उपयोगकर्ता-क्लिक के जवाब में कदम न हो। कृपया here देखें।आईई 9 + जेडप्लेयर: __flash__addCallback त्रुटि अगर खिलाड़ी को कॉल करने से पहले डोम में प्लेयर ले जाएं। लोड()


मैं कुछ दिनों के लिए एक बग के खिलाफ अपना सिर खटखटा रहा हूं और उम्मीद कर रहा हूं कि कोई मदद कर सके।

मेरे पास एक jquery स्क्रिप्ट है जो jwplayer javascript api का उपयोग कर jwplayer ऑब्जेक्ट ("myplayer") पर कॉल करती है। उदाहरण के लिए, एक विशेष वीडियो के साथ MyPLAYER लोड करने के लिए, मैं फोन:

myplayer.load('my_url'); 

यह दोनों फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर में ठीक काम करता है, जब तक कि मैं पहली बार डोम में किसी अन्य स्थान के लिए खिलाड़ी के लिए कदम नहीं है।

हालांकि, मेरी स्क्रिप्ट कभी-कभी खिलाड़ी को स्थान ए से स्थान बी तक ले जाती है और फिर myplayer.load() पर कॉल करने से पहले स्थान ए पर वापस ले जाती है। यह फ़ायरफ़ॉक्स में ठीक काम करता है।

return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>")); 

जो इस समारोह के अंदर है:: लेकिन इंटरनेट एक्सप्लोरर 9 में, मैं इस लाइन पर कोई त्रुटि मिलती है

function __flash__addCallback(instance, name) { 
    instance[name] = function() { 
    return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>")); 
    } 
} 

अगर मैं पता लगाने क्या इंटरनेट एक्सप्लोरर डिबगर में हो रहा है, मुझे लगता है कि देख myplayer.load('my_url')this.callInternal("jwLoad",u)jwplayer.js में कॉल करता है, और यह स्पष्ट रूप से this.callInternal("jwLoad",u) निष्पादित करते समय त्रुटि होती है।

विवरण:

एचटीएमएल इस तरह दिखता है:

<div id='stage'> 
    <div id='myplayer_wrapper'> 
     <object id='myplayer'>...</object> 
    </div> 
</div> 
<div id='holding-pen'></div> 

जब खिलाड़ी के लिए इस्तेमाल नहीं किया जा रहा है, मैं अपने आवरण-div जोत-कलम में ले जाएँ:

var el = $('#myplayer_wrapper');    
$('#holding-pen').append(el); 

प्लेयर के रैपर-डीवी को होल्डिंग-कलम में ले जाने के बाद, एचटीएमएल अब इस तरह दिखता है:

<div id='stage'></div> 
<div id='holding-pen'> 
    <div id='myplayer_wrapper'> 
     <object id='myplayer'>...</object> 
    </div> 
</div> 

जब मैं प्लेयर का उपयोग करना चाहते हैं, मैं अपने आवरण-div वापस चरण-div में ले जाएँ:

var el = $('#myplayer_wrapper');    
$('#stage).append(el); 

चरण-div, एचटीएमएल दिखता करने के लिए खिलाड़ी के आवरण-div जाने के बाद एक ही रूप में यह मूल रूप से किया था:

<div id='stage'> 
    <div id='myplayer_wrapper'> 
     <object id='myplayer'>...</object> 
    </div> 
</div> 
<div id='holding-pen'></div> 

पृष्ठ लोड पर, मैं खिलाड़ी-वस्तु बना सकते हैं और पकड़े-कलम पर ले जाते हैं। मैं फिर इसे मंच पर ले जाता हूं और एक वीडियो लोड करता हूं।

यदि उपयोगकर्ता क्लिक करता है, उदाहरण के लिए, एक छवि-थंबनेल, मैं वीडियो प्लेयर को होल्डिंग-पेन पर ले जाता हूं और चयनित छवि को मंच पर ले जाता हूं।

यदि उपयोगकर्ता वीडियो थंबनेल पर क्लिक करता है, तो मैं वीडियो प्लेयर को होल्डिंग पेन से पुनर्प्राप्त करता हूं और इसे वापस मंच पर ले जाता हूं। मैं फिर चयनित वीडियो के साथ खिलाड़ी लोड।यह वह जगह है जहां "_ फ़्लैश _addCallback" समस्या इंटरनेट एक्सप्लोरर में होती है।

क्या किसी के पास क्या हो रहा है इस बारे में कोई अंतर्दृष्टि है? या इंटरनेट एक्सप्लोरर में काम करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं इसके लिए कोई सुझाव?

बहुत बहुत धन्यवाद!

+0

संबंधित हो सकती है: https://github.com/johndyer/mediaelement/issues/530 – greg0ire

+0

कर सकते हैं पी

और अंत में कम से कम नहीं, सुनिश्चित करें कि आप नीचे दिए गए अंतिम एकल उद्धरण बंद कर आप इस मुद्दे का प्रदर्शन करते हुए एक पहेली बनाते हैं? प्रश्न के शीर्ष पर भी अपडेट किया गया लिंक अनुपलब्ध है। – Trevor

+0

http://stackoverflow.com/questions/12823994/ie9-move-and-load-flash-player-in-response-to-user-click-load-fails ..... यह लिंक काम नहीं कर रहा था, मैं इसे इसके साथ बदल दिया है .... http://www.longtailvideo.com/support/forums/jw-player/bug-reports/28999/ie9-move-and-load-player-in-response-to-user -क्लिक-लोड-असफल/ – Hitesh

उत्तर

1

यह आईई (6, 7, 8 & 9) के साथ एक ज्ञात समस्या प्रतीत होता है जहां तक ​​वेब पर विभिन्न पोस्ट जाते हैं। यह Flash संस्करणों और IE संस्करणों के संयोजन पर निर्भर करता है।

IE है, मालूम होता है, शब्द एक मीडिया प्लेयर से उम्मीद होती है के लिए आरक्षित तरीके:

  • खेलने
  • रोक
  • ठहराव
  • लंबाई

... और __flash__addCallback() फ़ंक्शन उन शब्दों का उपयोग करने लगते हैं। play और stopFlash फिल्मों का एक महत्वपूर्ण हिस्सा हैं और जब वे खेलते हैं या रोकते हैं तो निर्देश देते हैं। मैं पुष्टि नहीं कर सकता कि Flash के बाद के संस्करणों में संशोधन किया गया है या नहीं।

सूत्रों का कहना है इस समर्थन:

एक दिलचस्प मोड़: http://beweb.pbworks.com/w/page/53110280/Flash%20IE8%20Javascript%20Error

कुछ लोगों को उपयोग करने की सिफारिश की है SWFObject इस तरह की ब्राउज़र समस्याओं के आसपास जाने के लिए, दूसरों ने साउंडक्लाउड को अपने खिलाड़ी को तय करने के तरीके को देखा है - हालांकि this SoundCloud article वहां आशा की किसी भी कमी को झटके देता है।

दिन के अंत में, समस्या FlashJavaScript से संबंधित है, जो IE में आरक्षित विधियों के साथ क्रैश हो जाती है। आप हो सकता है के लिए:

  • अद्यतन आपकी JWPlayer
  • JWPlayer के बग ट्रैकर
  • समस्या अपने आप को एक समाधान बनाने पर एक मुद्दा बनाने के ...

कुछ जिसने मुझे कई आईई समस्याओं के आसपास जाने में मदद की है, DOCTYPE को <!DOCTYPE html> में बदल रहा है। सरल और अभी तक प्रभावी। ध्यान दें कि IE7 पसंद करता है कि DOCTYPE शब्द अपरकेस लिखा गया है। जब भी मैं इसे आज़माता हूं, मुझे पता है कि मैं एक बेताब ज़ोंबी में बदल गया हूं।:

$('#stage).append(el); 
+0

मेरे पास [इस वेबसाइट] (http://www.mediatheque-numerique.com/) के साथ सटीक वही संदेश है, इसलिए बक्षीस। समस्या तब होती है जब आप पहला वीडियो चलाते हैं, फिर बाईं ओर थंबनेल का उपयोग करके अगले वाले पर जाएं, फिर दूसरा वीडियो चलाएं। – greg0ire

+0

मेरा जवाब अपडेट किया गया, उम्मीद है कि यह मदद करता है! –

+0

+1, यह उपयोगी लगता है। मैं एक वीएम स्थापित करने की कोशिश करने जा रहा हूं ताकि मैं इसका परीक्षण कर सकूं। – greg0ire