Facebook Canvas API для SetSize полностью сломан - PullRequest
0 голосов
/ 22 декабря 2011

В настоящее время я пытаюсь решить проблему, чтобы размер моего приложения на Facebook был соответствующим образом изменен, поскольку в настоящее время он обрезается до нижней части (иначе вы не можете прокрутить до нижней части моего размещенного приложения с помощью полосы прокрутки.) потратил много времени, пытаясь выяснить эту проблему, поэтому любая помощь будет оценена. В настоящее время мои звонки FB.Canvas.setSize ({height: 2000}); вернуть true, однако ничего не происходит, и я все еще не могу достичь нижней части моего приложения. Я даже пытался звонить по нажатию кнопки, но все равно получал тот же результат.

Обновление: Попробовав несколько идей, я смог заставить это работать, если я загружаю синхронизацию SDK Facebook на мою домашнюю страницу и вызываю там setSize. Однако мне все еще не везет, когда он загружает Async или Sync на другую страницу, к которой перемещается мой холст? Просто установить размер на моей домашней странице не будет работать, так как каждая страница имеет свой размер. Кто-нибудь видел подобные проблемы

Вот код:

window.fbAsyncInit = function() {
  FB.init({
   appId      : 'XXXXXXXXX', // App ID
   cookie     : true, // enable cookies to allow the server to access the session
   oauth      : true, // enable OAuth 2.0
   xfbml      : false  // parse XFBML
  });

  FB.Canvas.setSize({ width: $(document).width(), height: $(document).height() });

  setFriends();
};

(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/en_US/all.js";
  d.getElementsByTagName('head')[0].appendChild(js);
}(document));


$(document).ready(function() {
  if (FB && FB.Canvas) {
    FB.Canvas.setSize({ width: $(document).width(), height: $(document).height() });
  }
});

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

У меня просто была похожая проблема при создании приложения для клиента.Я не мог заставить полосы прокрутки падать.В конце концов заставил их уйти, а затем возникла та же проблема, что и у вас, срезав нижнюю часть моего приложения.Вот ссылка на пост на форуме, на котором я его нашел.Facebook изменил немного кода:

Вместо FB.Canvas.setSize() теперь FB.Canvas.setAutoGrow().

Надеюсь, это поможет.

http://facebook.stackoverflow.com/questions/8559679/remove-horizontal-and-vertical-scrollbar-from-facebook-apps

0 голосов
/ 20 января 2012

Я действительно надеялся явно установить размер, так как он не изменяется вне загрузки страницы.Я не хотел, чтобы у Facebook были дополнительные расходы на проверку размера для каждого временного интервала и изменение размера исходя из этого.

Хороший звонок.Этот совет от http://www.hyperarts.com/blog/facebook-iframe-apps-getting-rid-of-scrollbars/

Чтобы уменьшить циклы ЦП ваших пользователей, вы также можете использовать функцию setSize.

FB.Canvas.setSize

После загрузкиJavascript SDK, вы можете использовать FB.Canvas.setSize (), чтобы избавиться от этих полос прокрутки.Поместите следующий код перед закрывающим тегом HEAD на своей странице индекса:

<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setAutoGrow();
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize({ width: 520, height: 1400 });
}
</script>

Это заставит Facebook изменить размер вашего iFrame после загрузки страницы и снова при изменении размера вашего контента.

Опять же, эти функции будут работать только в том случае, если вы установите для параметра Высота холста значение «Настраиваемый».

0 голосов
/ 22 декабря 2011

Я обычно вызываю setSize без каких-либо параметров, и это, кажется, работает для меня.

window.fbAsyncInit = function() {
FB.Canvas.setSize();
}

Что вы задали для высоты холста в дополнительных настройках приложения? Я обнаружил, что использование «жидкости» вызвало проблемы, и мне пришлось установить его на «Настраиваемый (по умолчанию: 800px)».

...