Die Facebook-Freigabe-Schaltfläche wird erst nach der Aktualisierung angezeigt

8

Letzte Woche habe ich Facebook- und Twitter-Share-Buttons zu meiner Rails-App hinzugefügt. Ich dachte, dass sie gut funktionierten, aber es scheint, dass sie nicht zuverlässig geladen wurden und eine Aktualisierung benötigten, um sie zu zeigen. Ich dachte, das wäre ein Turbolinks-Problem, da diese Dinge oft so sind, also habe ich das 'jquery-turbolinks'gem installiert. Es ist kein Turbolinks Problem.

Nachdem ich mich umgesehen habe, fand ich Antworten wie diese und während ich twttr.widgets.load(); zum Ende meiner Twitter-Funktion hinzufügte, löste ich sie Dieses Problem, ich hatte kein Glück mit FB.XFBML.parse(); , um den Facebook-Share-Button ohne eine Aktualisierung zu laden. Auf dieser Facebook-Entwickler-Seite listet sie den Share-Button nicht als eines der Dinge auf das kann mit diesem Code behoben werden.

Mein Code, der teilweise ist, ist wie folgt:

%Vor%     
Ossie 04.08.2014, 12:39
quelle

4 Antworten

8

Es liegt daran, dass manchmal Ihr FB-Objekt nicht einmal definiert ist und Ihre FB.XFBML.parse () - Funktion aufgerufen wird. Sie müssen das FB-Objekt aufrufen, wenn es initialisiert wurde. Also ändert sich dein Code wie folgt:

%Vor%                
DhruvPathak 28.08.2014, 10:16
quelle
1

Warum nicht eine Client-Seite share-Taste statt der Server-Seite share-Taste versuchen. Die Serverseite wird nur benötigt, wenn Sie nach dem Rendern auf der Serverseite eine zusätzliche Verarbeitung durchführen möchten. Wahrscheinlich müssen Sie nicht auf dem Server rendern.

%Vor%

Sie können auch einfach zu Ссылка gehen Übergeben Sie die URL, die Sie teilen möchten, wird Beispielcode für Sie generieren. Sie können dann basierend auf diesem Code die URL der freigegebenen Seite auf der Serverseite ändern, indem Sie an ihrer Stelle eine Variable verwenden. Auf diese Weise können Sie ein wiederverwendbares Code-Snippet verwenden, das für jede Seite Ihrer Website verwendet werden kann.

%Vor%

Wenn Sie die Seite rendern, setzen Sie einfach {$ pageURLValue} auf die aktuelle Seite. Tut mir leid, ich kenne keine Schienen, daher kann das Variable-Tag anders sein. Ersetzen Sie {$ pageURLValue} durch das Wert-Tag für Schienen.

    
Patrick W. McMahon 27.08.2014 15:45
quelle
0

Ich hatte Probleme mit dem gleichen Problem - ich hatte ein Div-Popup mit einem iframe, der auf eine HTML-Seite mit dem Twitter-Button zeigte. Ich hatte das Popup von Anfang an versteckt. Dies führt anscheinend dazu, dass der Twitter-Button nicht angezeigt wird. Anstatt ihn mit der Anzeige zu verstecken: keine / Sichtbarkeit: versteckte Position das Popup weit weit weg (links: -10000px) und die linke Position zurücksetzen, wenn das Popup angezeigt werden soll. Ich hoffe, es könnte jemandem helfen ..

    
Ghost1 13.05.2015 10:55
quelle
0

Ich habe ein Facebook-Seitenwidget in meine Website eingebettet, das ein Angular SPA war und ich hatte das gleiche "needs a refresh" -Problem, weil ich das Script fälschlicherweise in ein Elternteil mit der "index.html" genannten Seite gesetzt hatte, aber ich Ich habe den eingebetteten DIV in eine andere Unteransicht speziell auf einer "social_media.html" Seite gestellt. "index.html" geladen und das Skript beim ersten Besuch auf einer beliebigen Seite meiner Website, aber zu diesem Zeitpunkt hatte keine Sichtbarkeit des DIV auf meiner als noch unbenutzten und nicht angeforderten "social_media.html" Ansicht, so wenn die Benutzer navigiert schließlich zu einem Link, der die Unteransicht für "social_media.html" verwendet, "index.html" wurde nicht "neu geladen" und hat das Skript nicht erneut ausgelöst, es sei denn, ich habe auf Aktualisieren geklickt. Um es zu beheben, habe ich einfach das Script und die DIVS in dieselbe "social_media.html" gelegt, um alle Anfragen für die "social_media.html", die als View-Seite geladen werden soll, sofort zu laden und zu feuern. Anmerkung: Ich musste auch DhruvPathaks Ansatz hinzufügen.

    
Ade 01.04.2017 17:02
quelle