#facebook #resize #anchor
#Facebook #изменение размера #якорь
Вопрос:
Потратив весь день на попытки заставить якорь работать на вкладках Facebook, я сдался и обратился за помощью 🙂
На следующей очень простой вкладке http://www.facebook.com/pages/Testing-pages/196886257049573?sk=app_186989884709513 у нас есть якорь в конце страницы, который должен вернуть пользователя в начало страницы.
Если я оставлю полосу прокрутки iframe, все будет работать так, как ожидалось, но если я избавлюсь от полосы прокрутки с помощью следующего js:
window.fbAsyncInit = function() {
FB.init({
appId: 'your_app_id',
status: true,
cookie: true,
xfbml: true
});
FB.Canvas.setSize();
};
ссылка перестает работать и ничего не делает.
Следующая проблема возникает в IE9, FF7, но хорошо работает в Safari и Chrome.
Я в растерянности и действительно не знаю, что здесь делать.
ПРИМЕЧАНИЕ1: Попробовал следующий плагин http://flesler.blogspot.com/2007/10/jqueryscrollto.html
ПРИМЕЧАНИЕ2: пытался перезагрузить страницу через JS, но она перезагружается в том же месте, где была оставлена.
Комментарии:
1. Вы пробовали <a target=’_top’ href=’ facebook.com/pages/Testing-pages /… ‘> по ссылке или перезагрузка с помощью top.location.href=facebook.com/pages/Testing-pages /…
2. Или вы можете использовать это developers.facebook.com/docs/reference/javascript /…
3. target= ‘_top’ открывается в верхней части новой страницы.location выдает мне ошибку в разрешениях (межсайтовая безопасность), если я добавлю #name_of_anchor вместо просто # it работает в IE, поэтому остался только Firefox
4. Если вы уже загружаете JS SDK, я думаю, что FB. Canvas.scrollTo — ваш лучший выбор.
5. DannyKK ваш ответ был правильным, это решило мою проблему, большое вам спасибо, теперь мне просто нужно выяснить, как установить ваш ответ как правильный 🙂
Ответ №1:
Итак, я знаю, что это довольно поздно, но с помощью jQuery вы можете связать любой <a href=""></a>
, начинающийся с a #
, найти верхнюю позицию этого элемента, а затем использовать FB.Canvas.scrollTo(0, position)
для прокрутки до этого элемента.
http://jsfiddle.net/sluzorz/efyVf/
Редактировать:
Используйте jQuery.offset()
вместо этого.
Комментарии:
1. Уже давно решил это, но это правильный ответ 🙂
2. Ха-ха, да. Я пытался найти решение, мог бы также опубликовать то, что я придумал :).
3. Кроме того, вы также хотите
.offset
добавить отступы и поля.