Кнопки «Не разрешать» и «Разрешить» всегда за кадром в системе управления браузером facebook OAUTH WP7

#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