2010-09-15 23 views
21

मैं उस पृष्ठ पर कुछ करना चाहता हूं जब कोई उपयोगकर्ता 'पसंद' पर क्लिक करता है।फेसबुक 'लाइक' बटन पर एक क्लिक() ईवेंट संलग्न करें?

<iframe 
    id="FBLike" 
    src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah" 
    scrolling="no" 
    frameborder="0" 
    style="border:none; overflow:hidden; width:450px; height:80px;" 
    allowTransparency="true"> 
</iframe> 

मेरे स्क्रिप्ट एक बाध्य करने के लिए प्रयास करता है:

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.connect_widget_like_button clearfix like_button_no_like').live('click', function() { 
      alert('clicked'); 
     }); 
    }); 
</script> 

यह iFrame है कि फेसबुक की आपूर्ति पृष्ठ पर की तरह बटन जोड़ने के लिए है:

मैं कुछ निम्नलिखित की तरह साधारण काम करेगा सोचा पेज लोड होने पर iFrame में लोड होने वाले एंकर टैग पर ईवेंट पर क्लिक करें। हालांकि यह काम नहीं करता है। क्या यह क्लिक करने के लिए jQuery को पहचानने का कोई तरीका है? धन्यवाद

उत्तर

34

फेसबुक एपीआई आप की तरह क्लिक घटना की सदस्यता के लिए है, लेकिन यह आप घटना (निकाल दिया हो रहा तरह की सदस्यता के लिए जब की तरह कार्य पूरा किया जाता अनुमति देता है की अनुमति नहीं देता):

FB.Event.subscribe('edge.create', function(response) { 
    // like clicked 
}); 

here देखें।

+0

लेकिन यह एक टैब में नहीं किया जा सकता है, है ना? http://www.facebook.com/901Tequila?v=ap4904458780 पर कोई अन्य समाधान, जहां बटन पर क्लिक करना आपको पिन दीवार पर रीडायरेक्ट करता है? – SteMa

+3

आईफ्रेम के लिए काम नहीं करता है, केवल एक्सएफबीएमएल एफबी: –

+1

काम करता है लेकिन मेरे ऐप में क्लिक करने के बाद 3 सेकंड की तरह निकाल दिया जाता है। –

3

आप किसी ऐसे आईफ़्रेम के भीतर तत्वों तक पहुंचने के लिए जावास्क्रिप्ट का उपयोग नहीं कर सकते जो वर्तमान यूआरएल से संबंधित नहीं है, क्योंकि मुझे लगता है कि आप जिस डोमेन का उपयोग कर रहे हैं वह facebook.com नहीं है, आप किसी ईवेंट को संलग्न नहीं कर पाएंगे इस तरह से बटन की तरह।

4

एक PHP (या जो भी जिस भाषा का उपयोग) स्क्रिप्ट से http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

स्रोत कर्ल करने के लिए अपने HTML पृष्ठ में फेसबुक से स्रोत रखो बनाओ, तुम तो आप जो कुछ भी आप के साथ जावास्क्रिप्ट/jQuery में पसंद कर सकते हैं कर सकते हैं फेसबुक से कोड।

पीएचपी भीतर कर्ल के लिए कुछ उदाहरण - http://www.php.net/manual/en/curl.examples.php

+0

यह एक सुंदर चुस्त काम है, अच्छा :-) –

+0

यह भी उनके TOS/नीति के खिलाफ होने की संभावना है। –

+0

मुझे गंभीर संदेह है कि ऐसा कुछ काम करेगा। यह बटन स्पैमबल जैसा होगा और फेसबुक इसे अनुमति नहीं दे सकता है। – Denis

2

कोई क्रमशः edge.create और edge.remove का उपयोग करके फेसबुक की तरह 'जैसे' और 'विपरीत' ईवेंट का पता लगा सकता है।

+0

मुझे 'edge.remove' ईवेंट से अवगत नहीं था। क्या आपके पास एक लिंक है? –

-1

मुझे इस समस्या पर एक काम मिल गया है जो आईफ्रेम के साथ अच्छी तरह से काम करता है। यह स्टैक-ओवरफ्लो पर सुझाए गए समाधानों के संयोजन पर आधारित है। पहला कदम पृष्ठ पर पसंदों की संख्या को गिनना है। फिर उस चर को वैश्विक चर में संग्रहीत करें। आप लोड घटना के दौरान ऐसा कर सकते हैं। दूसरा, इस लिंक Detect Click into Iframe using JavaScript पर सुझाए गए समाधान का उपयोग करें। जब कोई माउस एक विशिष्ट क्षेत्र छोड़ देता है तो आप यह निर्धारित कर सकते हैं कि क्लिक की संख्या पिछले क्लिक की संख्या और क्लिक की वर्तमान संख्या के आधार पर बदल गई है या नहीं।

क्लिक की संख्या निर्धारित करने के लिए कोड इस लिंक पर उपलब्ध है http://jsfiddle.net/Takazudo/ function fetchLikeCount(url){ return $.Deferred(function(defer){ $.ajax({ dataType: 'jsonp', url: 'https://api.facebook.com/method/fql.query?callback=callback', data: { query: 'SELECT like_count FROM link_stat WHERE url="' + url + '"', format: 'JSON' } }).then(function(res){ try{ var count = res[0].like_count; defer.resolve(count); }catch(e){ reject(); } }, reject); function reject(){ defer.reject(';('); }; }).promise(); }

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