2010-05-21 16 views
5

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

अद्यतन 1:

खैर, यह मेरे वर्तमान कोड है। यह एफएफ में सही काम करता है, लेकिन आईई केवल अच्छा उत्पादन करता है। IE8 डिबगर किसी भी त्रुटि या तो रिपोर्ट नहीं करता ...

function onYouTubePlayerReady(playerId) { 
    if (playerId && playerId != 'undefined') { 
    if(playerId && playerId == 'ytvideo1'){ 
     var ytswf = document.getElementById('ytplayer1'); 
     alert('good'); 
    } else if(playerId && playerId == 'ytvideo2'){ 
     var ytswf = document.getElementById('ytplayer2'); 
    } else { 
    } 

    setInterval('', 1000); 
    ytswf.addEventListener('onStateChange', 'onytplayerStateChange'); 
    alert('great'); 
    } 
} 


function onytplayerStateChange(newState) { 
    alert('amazing'); 
    if(newState == 0){ 
    $.fn.colorbox.close(); 
    alert('perfect'); 
    } 
} 

अद्यतन 3: समाधान

, बस मेरी colorbox में onComplete रख दिया और उस में swfObject रख दिया और यह IE में पूरी तरह से काम किया।

+0

ऐडवेन्ट काम करना चाहिए। क्या आप कोड को दिखा सकते हैं कि आप addEvent का उपयोग कैसे कर रहे हैं। – Rajat

+0

मेरा मतलब संलग्नक है। – Rajat

+0

मैंने बस ytplayer.attachEvent ("onStateChange", onytplayerStateChange) किया; addEventListener के ठीक नीचे, मैंने एक शर्त में नहीं रखा, लगा कि इससे कोई फर्क नहीं पड़ता। – Derek

उत्तर

2

IE में परीक्षण से यह संदर्भ आप

ytswf = document.getElementById('ytplayer1'); 

असाइन किया गया है इससे पहले कि वास्तविक swf वस्तु भरी हुई है का उपयोग कर रहे की तरह दिखता है तो आईई सोचता है कि आप एक सरल div तत्व

आप की जरूरत की बात कर रहे इस कोड को

function onYouTubePlayerReady(playerId) { 
    ytswf = document.getElementById("ytplayer1"); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
} 

चलाने के लिए सही होने के बाद आप कॉल

swfobject.embedSWF("http://www.youtube.com/v/SPWU-EiulRY? 
hl=en_US&hd=0&rel=0&fs=1&autoplay=1&enablejsapi=1&playerapiid=ytvideo1", 
"popupVideoContainer1", "853", "505", "8", null, null, params, atts); 

इससे पहले कि आप को बंद कि $(function()

और var ytswf; जगह सही के बजाय और नीचे

+0

ठीक है, मैंने इस पर 4 घंटे बिताए हैं क्योंकि यह मुझे उत्सुकता से मिला है, और दुर्भाग्य से मैं खाली हाथ आया था।हालांकि यह अटैचमेंट नहीं है। यह है ... colorbox। कुछ ऐसा करता है कि आईई प्रस्तुत करने के बाद यूट्यूब ऑब्जेक्ट का काफी संदर्भ नहीं दे सकता है। यहां स्रोत कोड पर एक नज़र डालें: यहां राज्यों को कलरबॉक्स की अनुपस्थिति से पकड़ा जा रहा है: http://plain7.com/test.htm और यहां, नहीं जाएं: http://plain7.com/test2.htm । .. और यह केवल आईई में है, अन्य ब्राउज़रों को यह सही लगता है। मैं हार मानता हूं :) यह लगभग 5 बजे है और मैं ब्राइंडेड हूं। कुछ अन्य लाइटबॉक्स कार्यान्वयन का प्रयास करें (हालांकि कलरबॉक्स भी मेरा गुफा है) – Raine

+0

हां, अब आप देखते हैं कि मैंने पिछले 2 सप्ताह कैसा महसूस किया है ... इसमें देखने के लिए धन्यवाद, मुझे यकीन है कि मुझे एक विकल्प मिल सकता है कलरबॉक्स, जो कुछ गंभीर संशोधन करेगा। मैं आपके उत्तर को सही के रूप में चिह्नित करने जा रहा हूं क्योंकि अब मुझे पता है कि attachEvent समस्या नहीं है। एक बार फिर धन्यवाद! – Derek

+0

अंक, डेरेक के लिए धन्यवाद, भले ही मुझे लगता है कि मैंने इतना मदद नहीं की है। हालांकि, मैंने सोचा था कि अगर आप रंगीन विंडो को कॉलबॉक्स में कॉलबॉक्स में प्रस्तुत करते हैं, तो आप swfObject लोड करते हैं। मुझे नहीं पता कि यह कौन सी अन्य समस्याएं पैदा कर सकती है, लेकिन इससे पहले कि आप लाइटबॉक्स स्विच कर जाएं, हो सकता है कि यह कोशिश करने योग्य कुछ हो। – Raine

-1

न्यू जवाब

YouTube प्लेयर वस्तु का अपना addEventListener विधि है जो अधिक कैसे AS3 के वाक्य रचना की तरह है लागू करता है। जानकारी के अनुसार सूचीबद्ध here:

player.addEventListener (घटना: स्ट्रिंग, श्रोता: स्ट्रिंग): शून्य

YouTube पृष्ठ मैं जुड़ा हुआ मैं यहाँ प्रदान करेंगे, जिस पर एक उदाहरण देता है:

function onYouTubePlayerReady(playerId) { 
    ytplayer = document.getElementById("myytplayer"); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
} 

function onytplayerStateChange(newState) { 
    alert("Player's new state: " + newState); 
} 

यूट्यूब एक उदाहरण पृष्ठ भी प्रदान करता है जो साबित करता है कि उनका उदाहरण कोड आईई में काम करता है। मैं उस उदाहरण पृष्ठ here लिंक करूंगा।

अब, यहाँ पर एक प्रयास अपने कोड की उचित भागों गूगल/यूट्यूब द्वारा दिए गए उदाहरणों के अनुसार काम करने के लिए फिर से लिख दिया गया है:

function onYouTubePlayerReady(playerId) { 
    if(playerId && playerId == 'ytvideo1'){ 
    var ytplayer = document.getElementById('ytplayer1'); 
    } else if(playerId && playerId == 'ytvideo2'){ 
    var ytplayer = document.getElementById("ytplayer2"); 
    } else { 
    return; 
    } 

    ytplayer.addEventListener('onStateChange', 'onytplayerStateChange'); 
} 

इसलिए, यह पता चला है कि गलती यहाँ बनाया जा रहा है उठता है विधि नाम 'addEventListener' के उपयोग से बनाई गई भ्रम से। डब्ल्यू 3 सी जावास्क्रिप्ट कार्यान्वयन में, दूसरा पैरामीटर यूट्यूब कार्यान्वयन में एक समारोह है, दूसरा पैरामीटर एक स्ट्रिंग है। इसे एक शॉट दें =)।

+0

मैंने आपके उत्तर को प्रतिबिंबित करने के लिए अपने मूल प्रश्न में YouTubeYoulayerReady को बदल दिया। एफएफ में यह 1 अलर्ट करता है, आईई में यह अलर्ट 2. एफएफ अपेक्षित काम करता है, आईई फ़ंक्शन ऑनटप्लेयरस्टेट चेंज नहीं चलाता है। क्या मैं attachEventHandler का सही उपयोग कर रहा हूँ? बाइंड() फ़ंक्शन का उपयोग करने से मेरी स्थिति में मदद मिलेगी? – Derek

+0

फिर से, एफएफ में काम करता है, आईई नहीं। शायद एक उदाहरण आपको लोगों को मेरी समस्या का समाधान करने में मदद करेगा। – Derek

+0

डेरेक, कृपया मेरे उत्तर में लिंक किए गए उदाहरण पृष्ठ को खोलें, और मुझे बताएं कि क्या आप आईई के अपने संस्करण में स्टेटस चेंज घटनाओं को देख रहे हैं। मैंने आईई 8 में परीक्षण किया है, और यह मेरे लिए ठीक काम करने के लिए दिखाई दिया। साथ ही, कृपया ध्यान दें कि addEventListener में तीसरा पैरामीटर आवश्यक नहीं है। मैंने आपके द्वारा प्रदान किए गए एक के साथ YouTubePlayerReady को आजमाएं और बदलें, और वापस रिपोर्ट करें। आपको शाखाओं के बयान की ज़रूरत नहीं है। –

4

आईई addEventListener यह होता है का समर्थन नहीं करता <script> के बाद ?? आपको attachEvent सही चाहिए?

if (el.addEventListener){ 
    el.addEventListener('click', modifyText, false);  
else if (el.attachEvent){ 
    el.attachEvent('onclick', modifyText); 
} 

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

  • कोई संबंधित समस्या नहीं^_^