2012-02-11 1 views
1

Я пытаюсь реализовать средство просмотра Scribd на холсте приложения Facebook и позволяю ему адаптироваться к высоте видового экрана пользователя.
Мой код вызова функции FB.init в качестве самого первого элемента телаJavaScript - как использовать высоту FB.Canvas.getPageInfo вне функции обратного вызова

<div id="fb-root"></div> 
    <script> 

    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'my-fb-app-id', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
     }); 

     FB.Canvas.getPageInfo(function(info){ 
      var viewportHeight = info.clientHeight - info.scrollTop - info.offsetTop; 
      FB.Canvas.setSize ({height: viewportHeight}); 
     }); 
    }; 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/it_IT/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 

    </script> 

Таким образом, я регулирую высоту IFRAME. Теперь я должен использовать переменную viewportHeight вне обратного вызова, чтобы настроить высоту считывателя scribd. Scrbid код читателя:

<script type='text/javascript' src='http://www.scribd.com/javascripts/scribd_api.js'></script> 

<div id='embedded_doc'><a href='http://www.scribd.com'>Scribd</a></div> 

<script type='text/javascript'> 
    var scribd_doc = scribd.Document.getDoc(<? echo $doc_id; ?>, '<? echo $access_key; ?>'); 

    var onDocReady = function(e){ 
    //scribd_doc.api.setPage(3); 
    } 

    scribd_doc.addParam('jsapi_version', 2); 
    scribd_doc.addEventListener('docReady', onDocReady); 
    scribd_doc.addParam('height', viewportHeight);"; 

    scribd_doc.write('embedded_doc'); 
    </script> 

Но, кажется, что varaibles внутри функции обратного вызова FB.canvas.getInfo() не может быть видно снаружи. Уже пробовал с cookie, но я понял, что браузеры не позволяют хранить файлы cookie из iFrame.

Как бы я его разрешил (если это возможно)?

ответ

0
window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'my-fb-app-id', 
    status  : true, 
    cookie  : true, 
    xfbml  : true, 
    oauth  : true, 
    }); 

    FB.Canvas.getPageInfo(function(info){ 
     var viewportHeight = info.clientHeight - info.scrollTop - info.offsetTop; 
     FB.Canvas.setSize ({height: viewportHeight}); 
     prepScribdDoc(viewportHeight);    
    }); 
}; 
var onDocReady = function(e){ 
    //scribd_doc.api.setPage(3); 
    alert('Red eye'); 
} 

var prepScribdDoc = function(viewportHeight) { 
    var scribd_doc = scribd.Document.getDoc(<? echo $doc_id; ?>, '<? echo $access_key; ?>'); 
    scribd_doc.addParam('jsapi_version', 2); 
    scribd_doc.addEventListener('docReady', onDocReady); 
    scribd_doc.addParam('height', viewportHeight);"; 

    scribd_doc.write('embedded_doc'); 
} 
+0

спасибо! это было так просто ...! – user1203806

+0

Не могли бы вы щелкнуть по серой галочке рядом с моим вышеприведенным ответом, чтобы сделать ее зеленой? Благодаря :) – DMCS

 Смежные вопросы

  • Нет связанных вопросов^_^