2011-01-19 12 views
7

मैं एक आईफ्रेम का उपयोग कर एक फेसबुक कैनवास पृष्ठ एप्लिकेशन पर काम कर रहा हूं। मैं साझा करने के लिए एक संवाद बॉक्स बनाने के लिए fb.ui() का उपयोग कर रहा हूं, हालांकि जब संवाद खुलता है, तो यह पहले केंद्रित होता है, फिर एक बार async कॉल संवाद लोड करता है, तो यह संवाद बॉक्स को iframe के शीर्ष पर ले जाता है और स्क्रॉल करता है शीर्ष पर ब्राउज़र।ब्राउज़र को स्क्रॉल करने से fb.ui() को रोकना

मैंने बॉक्स को पुनर्स्थापित करने के लिए jQuery का उपयोग करने पर विचार किया हालांकि मुझे ब्राउज़र की स्थिति को स्क्रॉल करना होगा जो मुझे हैक चिल्लाता है। किसी भी सुझाव के लिए बहुत आभार होगा।

+3

इस के रूप में एक [फेसबुक के SDK में बग] बताया गया है (https://developers.facebook.com/bugs/359862544085722/)। मैं आशावादी नहीं हूं, लेकिन शायद अगर हर कोई कहता है कि वे इसे पुन: पेश कर सकते हैं, तो वे इसे ठीक कर देंगे। –

उत्तर

0

मैं स्क्रॉल स्थिति प्राप्त करने के लिए jquery का उपयोग कर रहा हूं, और उसके बाद इसे प्रतिक्रिया फ़ंक्शन में सेट कर रहा हूं।

scroll = $(window).scrollTop(); 
FB.ui(
{ 
//setup 
}, 
function(response) 
{ 
//handle response 
$(window).scrollTop(scroll); 
}); 
+0

यह काम करेगा लेकिन यह एक झटकेदार प्रभाव बनाता है जो बिल्कुल अच्छा नहीं है :) – nXqd

+0

यह स्क्रॉल करने और इसे वापस करने के अपने प्रयास को कैप्चर करने के लिए काम कर सकता है: $ (विंडो) .one ('scroll.fbshare', फ़ंक्शन () { $ (विंडो) .scrollTop (स्क्रॉल); }); – Dtipson

1

एक ही समस्या थी, iFrames में स्थिति बेकार है। संवाद को सही तरीके से स्थानांतरित करने का सबसे आसान तरीका पॉपअप डिस्प्ले विकल्प का उपयोग करना है जो वर्तमान पृष्ठ के केंद्र के ऊपर एक नई ब्राउज़र विंडो पॉप करता है। यह सुंदर नहीं है, लेकिन यह अच्छी तरह से काम करता है।

//generic sharing function 
var fbshare = function(url, display) { 
    var share = { 
     method: 'stream.share', 
     u: url, 
     display: display 
    }; 
    FB.ui(share); 
}; 

//share using popup 
<a href="#fbshare" onClick="fbshare('http://www.theurl.com','popup');">Share</a> 
+0

पॉपअप काम करता है .. लेकिन पॉपअप ब्लॉकर्स वाले लोग इसे देख पाएंगे। :( – xiaolin

+0

@eNetik, किसी भी तरह से इन पॉपअप को अवरुद्ध नहीं किया जाता है, कम से कम एफएफ या क्रोम – byron

-1

नैट विचार में सुधार ...

window['__sy'] = $(window).scrollTop(); 
    FB.ui(
    { 
    //setup 
    }, 
    function(response) 
    { 
    //handle response 
    }); 
    $(window).one('scroll',function(){$(window).scrollTop(window['__sy'])}); 
+0

में आपको शायद यह समझाया जाना चाहिए कि यह नाट के उत्तर में कैसे सुधार रहा है। आम तौर पर यह सबसे अच्छा है यदि आपके कोड के साथ कुछ स्पष्टीकरण है जवाब। – Jack

0

किसी और ने इस समस्या का सामना करते आ रहा है, सिर्फ दोहराते हैं this reported bug के बारे में ऊपर Jonathan Tran की टिप्पणी के लिए, यह फेसबुक द्वारा निर्धारित किया गया है, लेकिन केवल साझा संवाद के लिए। यदि आप अभी भी इस समस्या को मार रहे हैं, तो संभवतः आप अपने जावास्क्रिप्ट से FEED संवाद को कॉल कर रहे हैं, जिसे फेसबुक ने अभी तक ठीक करने के लिए परेशान नहीं किया है। इस का उपयोग करें:

FB.ui({ 
     method: 'share', 
     ... 

नहीं इस:

FB.ui({ 
     method: 'feed', 
     ... 
संबंधित मुद्दे