04 জানুয়ারী, 2012-এ আপডেট
দেখে মনে হচ্ছে আপনি ঠিক আগের মতো এফবি নির্ভর পদ্ধতিগুলি (উদাহরণস্বরূপ FB.getAuthResponse()) কল করতে পারবেন না FB.init(), যেমনটি FB.init()এখন অ্যাসিনক্রোনাস বলে মনে হচ্ছে। FB.getLoginStatus()প্রতিক্রিয়াতে আপনার কোডটি মোড়ানো এআইপিআই সম্পূর্ণ প্রস্তুত হওয়ার সময় সনাক্ত করার কৌশলটি মনে করে:
window.fbAsyncInit = function() {
FB.init({
//...
});
FB.getLoginStatus(function(response){
runFbInitCriticalCode();
});
};
বা যদি fbEnsureInit()নীচে থেকে বাস্তবায়ন ব্যবহার করে:
window.fbAsyncInit = function() {
FB.init({
//...
});
FB.getLoginStatus(function(response){
fbApiInit = true;
});
};
আসল পোস্ট:
আপনি যদি FB আরম্ভ করার সময় কিছু স্ক্রিপ্ট চালাতে চান তবে আপনি কিছু কলব্যাক ফাংশন ভিতরে রাখতে পারেন fbAsyncInit:
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $conf['fb']['appid']; ?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Canvas.setAutoResize();
runFbInitCriticalCode(); //function that contains FB init critical code
};
আপনি যদি FB.ensureInit এর সঠিক প্রতিস্থাপন করতে চান তবে কোনও সরকারী প্রতিস্থাপন (বড় ভুল ইমো) না থাকায় আপনাকে নিজের কিছু লিখতে হবে। আমি যা ব্যবহার করি তা এখানে:
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $conf['fb']['appid']; ?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Canvas.setAutoResize();
fbApiInit = true; //init flag
};
function fbEnsureInit(callback) {
if(!window.fbApiInit) {
setTimeout(function() {fbEnsureInit(callback);}, 50);
} else {
if(callback) {
callback();
}
}
}
ব্যবহার:
fbEnsureInit(function() {
console.log("this will be run once FB is initialized");
});