Якоря Iframe не работают на вкладках FB

#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 добавить отступы и поля.