ugrás a tartalomhoz

?fb_xd_fragment probléma

randomly · 2012. Jan. 2. (H), 17.37
SziaSztok!

Olyan bajon van hogy némelyik látogatóm meghívja az oldalam ezzel: ?fb_xd_fragment
Na erre nem igen készültem mikor anno elkeztem a sorokat írni.
És így egy fehér képernyőt kapnak.
próbáltam 301-el visszaterelni a helyes oldalra, de az fut a végtelenségig.

Sajnos nem vagyok annyira jó angolban hogy megtudjam oldani a problémát.

Valaki tudja mit tegyek azon kívül hogy leveszem a facebook kódját.

Köszönöm rand
 
1

Na ez egy tök vicces bug ami

Pethical · 2012. Jan. 3. (K), 02.34
Na ez egy tök vicces bug ami főleg IE alatt jön elő facebookkal, és asszem csak akkor, ha fbml-t használsz like gombhoz, vagy hasonlókhoz. A probléma, hogy a <html> elem stílusa display:none lesz miután lefut a facebook kód. A bug jelenlegi állapota CLOSED WONTFIX, azaz a facebook fejlesztő banda már sz@rik bele.

Lehetséges megoldások, az én ajánlási sorrendem szerint:

  1. Ne hasznáj fbmlt, van már helyette egyszerűbb megoldás és ez amúgy is deprecated
  2. Ha benne van a query stringben ez a cuccos, akkor headerrel irányítsd át e nélküli urlre, bár ez nálad nem jött be
  3. Cssbe
    html{display:block!important;}
    itt lehet kell overflow is majd...
  4. Írj egy kis js blokkot amit ezt csinálja
    document.getElementsByTagName('html')[0].style.display='block';
    Ha nem hat tedd az asyncinitbe, ha ott is túl hamar van, akkor késleltesd setTimeout-al, de mindenképp a teljes facebook kód futása után kell lefutnia, hogy rendesen működjön.


Én az első megoldást ajánlom cseréld le az fbml-es pluginokat HTML5-ös kódra.

Szerkesztés:

Van új bug is ezzel a témával, már a többi böngészőben is ez a móka van és nem kell hozzá fbml sem. :) Mint ahogy a facebook bugtackere is behal, ha ezt kap egy ilyet urlben.
http://developers.facebook.com/bugs/?fb_xd_fragment

Az összes megkerülés ugyanúgy érvényes rá.
2

Köszi, de

randomly · 2012. Jan. 4. (Sze), 18.33
Szia!

Köszönöm a választ.

Az 1. opció, mi az ajánlott? Azt nem írtad.

Az oldal sajnos még mindig, html 4.01 Transitional. Nem is olvastam még utána mi az a html 5.

Mondjuk ha belekeverem a html 5 kódot úgy is mindegy mert a validator már így síkit az <html lang="hu" xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" xmlns:fb="http://ogp.me/ns/fb#"> miatt.

Napi 15 látogatót vesztek vele, vagyis annyi hiba üzenet generálódik, remélem nem több. De a napi 800 látogatóból még ezt is sokallom. És alig van like, csak azért használom mert trendi szinte így.

Még egyszer köszönöm a válaszod és várom mi is az ajánlott kód.

Köszi rand
3

Az utólagos szerkesztés miatt

Pethical · 2012. Jan. 4. (Sze), 18.42
Az utólagos szerkesztés miatt kicsit össze-vissza lett a dolog. Ez az én hibám, bocsánat, meg lázas is voltam épp amikor írtam. Az 1-es, azaz, hogy használj html5-ös megoldást, az már nem érvényes, mert az új buggal már az sem jó. Tök jó ez a facebook. :-)
A javascriptes / css-es megoldást ajánlom neked, hogy állítsd át a html stílusát display:block;-ra.

Ha már kérdezted, leírom.
Mindent 3 módszerrel illeszthetsz be az oldaladba, amit a facebook ad.

1; xfbml:


<fb:like href="http://www.example.com" send="true" width="450" show_faces="true"></fb:like>

<div id="fb-root"></div>
<script>(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 = "//connect.facebook.net/hu_HU/all.js#xfbml=1&appId=170397249728058";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
2; iframe:

<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.example.com&amp;send=false&amp;layout=standard&amp;width=450&amp;show_faces=true&amp;action=like&amp;colorscheme=light&amp;font&amp;height=80&amp;appId=170397249728058" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>
3; html5


<div class="fb-like" data-href="http://www.example.com" data-send="true" data-width="450" data-show-faces="true"></div>

<div id="fb-root"></div>
<script>(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 = "//connect.facebook.net/hu_HU/all.js#xfbml=1&appId=170397249728058";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
4

Napi 15 látogatót vesztek

inf · 2012. Jan. 4. (Sze), 19.00
Napi 15 látogatót vesztek vele, vagyis annyi hiba üzenet generálódik, remélem nem több. De a napi 800 látogatóból még ezt is sokallom. És alig van like, csak azért használom mert trendi szinte így.


Én a helyedben azonnal kiszedtem volna, amikor felfedezem a hibát, és vissza se raktam volna éles oldalra, amíg nem javítottam... (Legalábbis ez a jól felfogott üzleti érdeked...)
5

Sajnos kevés vagyok a kódhoz

randomly · 2012. Jan. 5. (Cs), 20.30
Szia!

Sajnos kevés vagyok a a facebook kód javításhoz ... ha jól gondolom még ők maguk is.

A weblapok webshopok 50% körüli visszafordulás aránnyal így az a pár százalék facebook veszteség már mint sem számít.

Vagy csak változik az élet és tényleg sokkal több az információt kereső ember mint 10 éve, Akkor jóval kevesebb volt a visszafordulás arányaiban.

Üdv. rand
6

Ki a kevés?

Pepita · 2012. Jan. 6. (P), 21.38
Sajnos kevés vagyok a a facebook kód javításhoz ... ha jól gondolom még ők maguk is.
Ha ennek a mondatnak az első fele igaz, akkor igen vastag bőr kellet (orcádra) a második fele leírásához. Nem feltétlenül a fejlesztők a hibásak, többnyire inkább a megrendelő...

...az a pár százalék facebook veszteség már mint sem számít.
Az számít, hogy rossz híredet kelti a hibásan működő oldalad. Ez nem ugyanaz, mint mikor csak megnézik a termékeidet, de nem vásárolnak.
7

Az számít, hogy rossz híredet

inf · 2012. Jan. 6. (P), 23.17
Az számít, hogy rossz híredet kelti a hibásan működő oldalad. Ez nem ugyanaz, mint mikor csak megnézik a termékeidet, de nem vásárolnak.


+1
A rossz hír keltés az olyan dolog, hogy nem egy vevőt ijeszt el, hanem mindenkit, akinek elmeséli... Egy elégedetlen ügyfél az 100-at csinál... Szóval sokkal több ügyfelet lehet ilyen hozzáállással veszteni, mint hinnéd... Ezért mondtam, hogy szedd ki a facebook kódot amíg nem tudod úgy megcsinálni, hogy működjön.
8

mögoldás, elvileg

bbalint2 · 2012. Jan. 7. (Szo), 20.19
nem olvastam végig a hozzászólásokat, de:

tegnap találkoztam a problémával én is; egy bő félóra anyázás és utánaolvasgatás után elméletben sikerült megoldanom a problémát (gyakorlatban meg majd az idő megmondja…)

a facebook három módszert használ az adatok betöltésére, domének közötti közlekedtetésére:
  • böngészőspecifikus megoldások (SessionStorage és társai)
  • Flash, azon belül is valamelyik új[abb] verziói (mivel alapértelmezésben MB-os adatkorlát van rajt')
  • cookie-k és más, hasonló kuruzslás
ez utóbbi megoldás tartalmazza az fb_xd_fragment és az fb_xd_bust GET paraméterek alkalmazását.
(ezek mellett amúgy a konkrét adat a hash-ben, a kettőskereszt utáni részben van; de az nem látszik szerveroldalon)

alapértelmezésben az aktuális oldalt tölti be a facebook a GET paraméterrel kibővítve, de:
az FB.Init() függvénynek van egy channelUrl paramétere; ha ez meg van adva, akkor az aktuális oldal helyett a megadott channelUrl-t kéri le fb_xd_fragment paraméterrel megbolondítva

a leggyakoribb hibajelenség, hogy üres oldal jön be; erre a megoldás, hogy a <html> display CSS tulajdonságát block-ra visszaállítjuk, lásd. alább.

MEGOLDÁS

hozz létre egy fbchannel.html file-t a szerver gyökérkönyvtárában vagy bárhol; a tartalma legyen:
<script src=//connect.facebook.net/hu_HU/all.js></script>
(ajánlott még jó távoli Expires-t rakni erre a file-ra, különben szegény szerverszoftver esetleg belehal a sok fbchannel.html lekérésbe…)

a rendes oldalon az inicializációt módosítsd:

<div id=fb-root></div>
<script>
 window.fbAsyncInit=function(){
  FB.Init({
   appId : '<appid>',
   status : true,
   cookie : true,
   xfbml : true,
   oauth : true,
   channelUrl : 'http://szarver.hu/fbchannel.html'
  });
 };
</script>
<script src=//connect.facebook.net/hu_HU/all.js async defer></script>
(ez a facebook Javascript SDK-t aszinkron módon tölti be - az FB.* hívásokat mozgasd át a window.fbAsyncInit függvény törzsébe)

továbbá a </body> tag előtt még meg kell fixálni <html>-t pl. kicsit PHP-val megspékelve:

<?php
 if(isset($_REQUEST['fb_xd_fragment'])
 || isset($_REQUEST['fb_xd_bust']))
  echo '<script>document.getElementsByTagName("html")[0].style.display="block";</script>';
 
 echo '</body>',
      '</html>';
?>
vagy Javascript-tel:

<script>
 if(window.location.match(/fb_xd_fragment|fb_xd_bust/))
  document.getElementByTagName("html")[0].style.display="block";
</script>

</body>
</html>
TIPPEK, TRÜKKÖK

továbbá, javaslom, hogy bizonyos "érzékenyebb" oldalakon érdemes kikapcsolni az összes facebook hülyeséget, pl. én a fizetés befejezése és "megrendelés" oldalakon inkább ki sem teszem az <fb:*> tag-eket.

EGYÉB MEGOLDÁS

vagy, az egész probléma kikerülésére nem használni a Javascript SDK-t.
csakhogy az nélkül meg nemigazán lehet elkapni a facebookos eseményeket (FB.Event.Subscribe):
azért lehet érdemes ezeket monitorozni, mert így akár statisztikai adatot is lehet csinálni belőle: pl. hány látogatónk volt, aki rábökött a Tetszik gombra; azok milyen értékben vásároltak elefánthát-vakarót stb.

TOVÁBBI TIPPEK, TÜKRÖK

itt-ott fórumokon azt is írták, hogy ilyen ?fb_xd_fragment-es webcímeket sikerült a keresőrobotoknak is begyűjteniük, így érdemes használni a <link rel=canonical href=""> HTML tag-et, ami a keresőrobotok és hasonló állatok számára tartalmazza a lekért dokumentum abszolút címét a href="" attribútumban

ZÁRSZÓ

ennyit mára a tudomány és technika újdon…hülyeségeiből, legközelebb… majd még máskor jelentkezünk!
9

Natessék!

Pepita · 2012. Jan. 10. (K), 08.52
Ezek után asszem én a bármiféle FaceBook-alkalmazás használatának még a gondolatcsíráját is kiverem apró fejecskémből... Hát erre az ide-oda-bugolásra való a web ill. a fejlesztő?!