#windows-phone-7 #facebook-c#-sdk
#windows-phone-7 #facebook-c #-sdk
Вопрос:
Я разработал клиент WP7, который использует Facebook C # SDK, используя OAUTH и элемент управления веб-браузером.
Все работает нормально, за исключением того, что на странице, где пользователю предлагается принять / отклонить запрашиваемые мной разрешения на доступ, кнопки «Не разрешать» и «Разрешить» находятся в нижней части экрана браузера, и не очевидно, что пользователь должен прокручивать вниз, чтобы щелкнуть по ним.
Я пробовал использовать все различные режимы отображения (сенсорный, wap, страница, всплывающее окно), и «страница» — единственный, который показывает кнопки на одной странице, но тогда шрифты крошечные. Я также пробовал разные размеры для элемента управления браузером.
Пример в SDK имеет такое же поведение.
Кто-нибудь нашел обходной путь для этого?
Ответ №1:
Решение, которое я нашел, заключается в использовании Javascript для изменения свойств CSS для элемента:
private void FacebookLoginBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
// check for when this approve page has been navigated to
if (FacebookLoginBrowser.Source.AbsolutePath == "/connect/uiserver.php")
{
showBrowser();
// do the script injection on the LoadCompleted event - doing it here will appear to work when you have a fast connection, but almost certainly fails over 3G because the elements aren't ready in time to be modified
FacebookLoginBrowser.LoadCompleted = new System.Windows.Navigation.LoadCompletedEventHandler(FacebookLoginBrowser_LoadCompleted);
}
// etc ...
}
void FacebookLoginBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
FacebookLoginBrowser.LoadCompleted -= FacebookLoginBrowser_LoadCompleted;
// Facebook will likely change this and break our code soon, so make sure you anticipates this
try
{
FacebookLoginBrowser.InvokeScript("eval", "document.getElementById('platform_dialog_bottom_bar').style.position = 'relative';document.getElementById('platform_dialog_bottom_bar').style.top = '-60px';");
}
catch
{
// TODO: display instruction to scroll down if we ever end up here
}
}
Я надеюсь, что это поможет. Не стесняйтесь обращаться ко мне, если у вас возникнут проблемы
Комментарии:
1. Кстати, на данный момент это единственное решение. Я создал оригинальную демонстрационную версию WP7 для Facebook C # SDK. К сожалению, что-то не так либо в браузере WP7 IE, либо в Facebook Html. Я точно не выяснил, кто виноват (но я предполагаю, что Facebook отслеживает работу браузера и настраивает рендеринг). В любом случае, пока Facebook не исправит проблему или не выйдет Mango, это решение..
Ответ №2:
Я этого не пробовал, но не могли бы вы использовать метод Scale элемента управления WebBrowser (SizeF) для изменения уровня масштабирования страницы?
Комментарии:
1. В элементе управления WebBrowser в WP7 отсутствует свойство Scale, а содержимое html возвращается из Facebook, поэтому я не думаю, что смогу ввести настройки viewport в HTML