javascript - Google Chrome/Windows/FB.Canvas.setAutoGrow problem

Indlæg af Hanne Mølgaard Plasc

Problem



Spørgsmålet er indlysende her.


https://www.facebook.com/TabascoUK/app\_202624839826809[9]


Brug Google Chrome på Windows XP, FB.Canvas.setAutoGrow beregner rammestørrelsen med to pixels. Jeg ville rapportere det som en fejl, men (1) jeg kunne ikke reproducere den samme adfærd på alle computere, selvom de har det samme setup. (2) Jeg har set på all.js og det ser okay - ingen åbenbar grund til fejlen.


Jeg har forsøgt at genoprette cache, opdatere browser osv. Men der er stadig 2px fejl.


Hvad kan forårsage det?

Bedste reference


Jeg har ikke haft problemer lige lang tid siden dette blev bogført. Men da Chuck Morris synes at have det samme problem, vil jeg dele min erfaring.


For det første havde jeg fejlagtig antagelse om, at FB.Canvas.setAutoGrow kan kaldes til enhver tid i kode. Det var fornuftigt, da det derefter starter interval, som skulle registrere eventuelle DOM-ændringer. Nå, det er ikke sådan.


Alligevel er tricket at indlæse Facebook JS efter at DOM er indlæst. I min erfaring hjælper det med at omgå alle fejl. Hvis du bruger jQuery, vil noget som dette gøre.


$(function(){
    window.fbAsyncInit  = function()
    {
        FB.init({/*[..]*/});

        FB.Canvas.setAutoGrow(91);
        FB.Canvas.scrollTo(0,0);
    };

    // Load the SDK Asynchronously
    (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));
});

Andre referencer 1


Guy,


Jeg sætter stor pris på, at du følger op på dette, jeg håbede virkelig, at din måde skulle arbejde i mit setup, fordi det er meget renere end min hack fix, men det er stadig fejlberegning af iframe med 2pixels. Anyways, det er det, jeg gjorde lige i tilfælde, hvis nogen løber ind i dette.


window.fbAsyncInit = function() {
    FB.init({/*[..]*/});


    // Additional initialization code here
    FB.Canvas.setAutoGrow(91);
    FB.Canvas.scrollTo(0,0); 

    //FB.Canvas.setAutoGrow is miscalculating the height by 2 pixels in webkit browsers
    //so we shorten the content by 2 pixels right away, and a second later if things were a little too slow
    window.setTimeout(function() {
        $("#footer").css("height", "74px");
    }, 250);
    window.setTimeout(function() {
        $("#footer").css("height", "72px");
    }, 1000); 
  };

Andre referencer 2


Jeg havde det samme problem, og jeg fandt, at jeg blev tilføjet


<script type="text/javascript" src="http://connect.facebook.net/en\_US/all.js"></script>


Men i krom skal du tilføje på følgende måde


<script type="text/javascript" src="https://connect.facebook.net/en\_US/all.js"></script>


Forskellige protokoller, der ikke fungerer i krom, bruger altid https


eller den bedste måde kunne være


 <script type="text/javascript" src="//connect.facebook.net/en\_US/all.js"></script>