Facebook macht ja leider was es will ( Aber da die Benutzer ohne viel nachzudenken mit laufen.... ). Nun hat das deutsche Recht leider ein Problem mit der [Art und Weise](http://www.heise.de/newsticker/meldung/Like-Button-Facebook-erklaert-Details-zur-Speicherpraxis-1339079.html) wie [Facebook mit den Daten](http://www.heise.de/security/artikel/Das-verraet-Facebooks-Like-Button-1230906.html) umgeht. Daher hat sich der [Heise Verlag](http://www.heise-medien.de) für die [eigene Webseite was überlegt](http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html). Nun kann man sich die [Idee kopieren und bei sich einbauen](http://www.heise.de/extras/socialshareprivacy/). Was aber wenn man leider schon andere Social-Share-Dienste verwendet ? Bei der Verwendung von [Addthis](http://www.addthis.com/) habe ich nun eine Lösung gefunden die das Verhalten nachbaut. Hier ist der HTML Teil der beim ersten Aufruf der Seite geladen wird. ``` {.html name="code"} ``` Wie man sieht gibt es zwei "Blöcke". Der Erste ist der normale Addthis Teil, der die gängigen Icons anzeigt. Der zweite Block beinhaltet erster mal nur zwei Icons die man anklicken kann. Diese Aktion wir via Javascript hinzugefügt. Dazu kommt noch ein wenig jQuery: ``` {.javascript name="code"} $(window).load(function() { $("#socialMediaExtended").click(function() { var url = "/getSocialBarExtended"; $.ajax({ url: url, cache: false, success: function(html) { $('#socialFrame').html(html); addthisInit(); } }); }); addthisInit(); }); function addthisInit() { var addthisScript = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1'; if(window.addthis) { window.addthis = null; } $.getScript(addthisScript, function() { addthis.init(); }); } ``` Wenn die Seite geladen wurde, wird mit der Funktion "addthisInit" das JavaScript von Addthis geladen. Wichtig dabei ist der Parameter "#domread=1" am Ende der URL. Damit wird der erste Block mit den Addthis Aktionen hinterlegt und kann verwendet werden. Wenn man nun in dem zweiten Block auf ein Icon klick wird der AJAX Aufruf ausgeführt. Das was dabei zurückkommt wird in das Element mit der ID "socialFrame" rein geschrieben. Wobei der bestehende Inhalt überschrieben wird. ``` {.html name="code"} ``` Nach dem der Inhalt geladen worden ist, wir die Funktion "addthisInit" erneut aufgerufen und Addthis neu geladen und somit werden die neuen Buttons eingebunden und funktionieren. Auf diese Weise werden die IFrames der Anbieter (Facebook, Google etc.) nur auf Wunsch geladen. Bei Fragen einfach fragen ;-) Sep 13 2011 © https://www.bananas-playground.net 2000 - 2024