jQuery

2009-11-24 4 views
8

के साथ एक फ्लैश मूवी (ऑब्जेक्ट/एम्बेड) पर एक क्लिक को ट्रैक करें मैं एक गतिशील बैनर सिस्टम बना रहा हूं जो आईएमजी बैनर को संभालने के साथ-साथ ऑब्जेक्ट/एम्बेड के साथ किए गए फ़्लैश बैनर भी संभाल सकता है। पूरी साइट 'क्लिक' घटनाओं को संभालने सहित jQuery का भारी उपयोग करती है।jQuery

यह स्पष्ट रूप से कोई समस्या नहीं है जब छवि पर क्लिक को ट्रैक करने की बात आती है (मैं पैरेंट डीआईवी टैग पर क्लिक ट्रैक करता हूं। हालांकि, विज्ञापन विफल होने पर यह असफल हो जाता है, क्योंकि मुझे संदेह है कि यह होगा।

क्या कोई jQuery वैकल्पिक हल है कि मुझे डोम के साथ एक फ्लैश तत्व पर एक क्लिक पर कब्जा करने की अनुमति होगी?

उत्तर

3

आप SWF के स्रोत तक पहुंचना है, तो आप उपयोग कर सकते हैं ExternalInterface युक्त html पृष्ठ के साथ संवाद करने

//inside the flash movie: 
stage.addEventListener(MouseEvent.CLICK, onClick); 
function onClick(e:MouseEvent):void 
{ 
    ExternalInterface.call("handleFlashClick", [parameters to the method]); 
} 

//javascript in the containing html page 
function handleFlashClick() 
{ 
    //call the jQuery method here. 
} 
+1

मेरे पास स्रोत तक पहुंच नहीं है, यह एक बैनर सिस्टम है जो ग्राहकों को सिस्टम में अपने स्वयं के एसडब्ल्यूएफ बैनर अपलोड करने की अनुमति देगा। इसके साथ, क्या एक 'इन-हाउस' बैनर को लिंक करना बेहतर होगा, जो क्लाइंट बैनर एसडब्ल्यूएफ को अपने आप में एक फिल्म के रूप में लोड करता है, फ्लैश फाइल का मेरा एसडब्ल्यूएफ नियंत्रण देता है, जबकि अभी भी बिना छेड़छाड़ किए गए क्लाइंट एसडब्ल्यूएफ फाइलों को अनुमति देता है अपलोड किया जा सकता है ?? – David

+0

यह एक अच्छा विचार की तरह लगता है। – Amarghosh

+0

आपकी मदद के लिए धन्यवाद! :) – David

10

मुझे पता है कि यह बहुत समय पहले पोस्ट किया गया था और पहले से ही उत्तर दिया गया था, लेकिन मैं सिर्फ भविष्य के साइट आगंतुकों के लिए एक बहुत आसान समाधान जोड़ना चाहता था। जबकि एम्बेडेड एसडब्ल्यूएफ फ़ाइल ऑनक्लिक घटना निगल जाएगी, यह ऑनमोस्डउन घटना को निगल नहीं देती है। इस चाल में वर्म टैग के साथ-साथ एम्बेड टैग में पारदर्शी होने के लिए wmode सेट है।

<div id="layer1" onmousedown="alert('mouse down')"> 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" 
width="799" height="741" id="myMovieName"> 
<param name="movie" value="_data.swf" /> 
<param name="quality" value="high" /> 
<param name="play" value="true" /> 
<param name="loop" value="true" /> 
<param name="wmode" value="transparent" /> 
<embed src="_data.swf" quality=high bgcolor=#FFFFFF width="799" height="741" 
name="myMovieName" type="application/x-shockwave-flash" 
play="true" loop="true" wmode="transparent" 
pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"> 
</embed> 
</object> 
</div> 

इसके बजाय आप तो जैसे mousedown घटना के लिए बाध्य करने के लिए jQuery का उपयोग कर सकते हैं:

$('#layer1').mousedown(function() { 
    alert('mouse down'); 
}); 
+0

डबल क्लिक के साथ एक ही चीज़ करने का कोई भी संभावित तरीका? – Osa

2

मैं webwires का जवाब लेने के लिए और एक वस्तु निम्नलिखित का उपयोग कर काम कर क्लिक प्राप्त करने में सक्षम था।

// Podcast player GA event tracking 
var podcast_player = $('object.podcast-player'); 
if(podcast_player.length > 0) 
{ 
    podcast_player.live('mousedown',function(){ 
     _gaq.push(['_trackEvent', 'Podcast', 'Play']); 
    }); 
} 

मुझे आशा है कि यह वहाँ बाहर किसी और में मदद करता है, धन्यवाद webwires