/ / Wie verhindere ich, dass mein Facebook-Freigabefenster vom Popup-Blocker blockiert wird? - Javascript, Facebook, Facebook-Graph-API, Facebook-Javascript-SDK

Wie verhindere ich, dass mein Facebook-Freigabefenster von Popup-Blocker blockiert wird? - Javascript, Facebook, Facebook-Diagramm-API, Facebook-Javascript-SDK

Ich habe mein Facebook-Freigabefenster angezeigt, wenn eine Funktion mit Klick auf den Facebook-Freigabebutton aufgerufen wird.

Das Problem ist, dass das Facebook-Fenster versucht zu erscheinen, aber durch den Popup-Blocker blockiert wird.

Ich erstelle zum ersten Mal ein Freigabefenster. Gibt es eine einfache Lösung, um den Popup-Blocker zu umgehen?

Hier ist die Schaltfläche, die die Funktion auslöst:

<button class="share-now" onclick="fb_callout();">

Und hier ist die Funktion, die aufgerufen wird:

<script>
function fb_callout() {
(function(d){
var js, id = "facebook-jssdk", ref = d.getElementsByTagName("script")[0];
if (d.getElementById(id)) {return;}
js = d.createElement("script"); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
}
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId      : "162280254223002", // App ID from the App Dashboard
xfbml   : true,
version : "v2.5",
status     : true
});

// Additional initialization code such as adding Event Listeners goes here
FB.ui(
{
method: "feed",
href: "http://www.example.com",
name: "Example",
link: "http://www.example.com",
picture: "http://image.png",
caption: "Caption",
description: "words go here"
},
function(response) {
if (response && response.post_id) {
alert("Post was published.");
} else {
alert("Post was not published.");
}
}
);
};
</script>

Antworten:

4 für die Antwort № 1

Sie versuchen gerade, ein Popup zu öffnen, das nicht aktiviert istBenutzerinteraktion, aber in einer asynchronen Rückruffunktion. Natürlich erkennt der Popup-Blocker dies und blockiert das Popup (aus gutem Grund). Sie müssen zwei Dinge tun:

  • Laden Sie das JS SDK beim Laden der Seite, NICHT bei Benutzerinteraktion.
  • Anruf FB.ui direkt auf Benutzerinteraktion. Es sollte das einzige sein, was in der fb_callout Funktion.