Facebook share via FB.ui
Ich versuche, verwenden Sie den folgenden code, den ich schrieb auf der Grundlage der neuen Dokumentation zeigt eine "post to feed" - dialog ( https://developers.facebook.com/docs/javascript/reference/FB.ui ), aber ich bekomme folgende Fehlermeldung "ReferenceError: FB ist nicht definiert"
den code, den ich verwenden ist die einfachste, die ich mit oben kommen kann:
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxx',
status : true,
xfbml : true
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
FB.ui({
method: 'feed',
name: 'Facebook Dialogs',
link: 'https://developers.facebook.com/docs/dialogs/',
picture: 'http://fbrell.com/f8.jpg',
caption: 'Reference Documentation',
description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
});
Irgendwelche Ideen?
BEARBEITEN 1
und wenn ich will, um den dialog zu öffnen, wenn ein Benutzer auf einen link klickt, ich möchte die jquery-click-Ereignis
$(".userActions a.facebook").click(function() {
FB.ui({
method: 'feed',
name: 'Facebook Dialogs',
link: 'https://developers.facebook.com/docs/dialogs/',
picture: 'http://fbrell.com/f8.jpg',
caption: 'Reference Documentation',
description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
});
});
haben oder die FB.ui innerhalb einer Funktion, die Parameter akzeptiert und diese Funktion aufrufen, z.B.
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxx',
status : true,
xfbml : true
});
//Code in here will run once FB has been initialised
function FB_post_feed(method,name,link,picture,caption,description){
FB.ui({
method: method,
name: name,
link: link,
picture: picture,
caption: caption,
description: description
});
}
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
und irgendwo in den HTML -
$(".userActions a.facebook").click(function() {
FB_post_feed('feed','Facebook Dialogs','https://developers.facebook.com/docs/dialogs/','http://fbrell.com/f8.jpg','Reference Documentation','Dialogs provide a simple, consistent interface for applications to interface with users.')
}
InformationsquelleAutor Andreas Traganidas | 2014-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, es gibt ein paar konzeptionelle Fehler, die Sie getan haben dort.
Erste:
Was ist das eigentlich tun sollte? Öffnen einer Freigabe-dialog ohne Benutzer-Interaktion? FB.ui muss aufgerufen werden, wenn Share-Dialog angezeigt werden soll, nicht gleich nach Facebook AsyncInit Funktion.
Und, auch, facebook sdk wird Asynchron gestartet, wie der name der Funktion vermuten lässt. Es bedeutet, dass FB nicht definiert werden, in der Ort, den Sie setzen die Funktion.
Zweite:
FB_post_feed Funktion, in diesem Fall, ist eine lokale Funktion innerhalb fbAsyncInit Funktion. Also, Sie don ' T haben Zugang zu FB_post_feed Funktion außerhalb fbAsyncInit.
Neben, FB.init ist asynchron, das bedeutet, FB wird nicht definiert durch die Zeit, die FB_post_feed erstellt wird.
Je nachdem, wie Ihr HTML-code definiert ist, und wenn diese Kennung korrekt ist, wird der code
sollte funktionieren. Allerdings nur einen Rat: Klassen sind in der Regel verwendet, um den Stil etwas. Wäre es best-practice-wenn Sie die Taste(oder "a" element) id statt.
InformationsquelleAutor Joaobrunoah
Ich hatte das gleiche problem und löste es, indem er die Facebook-script von jQuery und dann initialisieren:
InformationsquelleAutor Ninita