/ / Comment puis-je empêcher ma fenêtre de partage Facebook d'être bloquée par un bloqueur de fenêtres contextuelles? - javascript, facebook, facebook-graph-api, facebook-javascript-sdk

Comment puis-je empêcher ma fenêtre de partage Facebook d'être bloquée par un bloqueur de popup? - javascript, facebook, facebook-graph-api, facebook-javascript-sdk

J'ai ma fenêtre de partage Facebook qui s'affiche lorsqu'une fonction est appelée sur Cliquez sur le bouton de partage Facebook.

Le problème est que la fenêtre Facebook tente d'apparaître mais est bloquée par un bloqueur de popup.

C'est la première fois que je crée une fenêtre de partage. Existe-t-il une solution simple pour contourner le bloqueur de popups?

Voici le bouton qui déclenche la fonction:

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

Et voici la fonction qui s'appelle:

<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>

Réponses:

4 pour la réponse № 1

En ce moment, vous essayez d'ouvrir une fenêtre contextuelle pas surinteraction avec l'utilisateur, mais dans une fonction de rappel asynchrone. Bien sûr, le bloqueur de popups détecte cela et bloque le popup (pour une bonne raison). Vous devez faire deux choses:

  • Chargez le SDK JS lors du chargement de la page, PAS lors de l'interaction avec l'utilisateur.
  • Appel FB.ui directement sur l'interaction de l'utilisateur. Ce devrait être la seule chose fb_callout fonction.