topic{Исправление кривой верстки страницы авторизации Вконтакте}

В одном из своих последних приложений нужно было реализовать авторизацию через аккаунт вконтакте. Работает она на базе протокола OAuth 2.0. На практике нужно показать пользователю HTML страницу авторизации, на которой он вводит свои логин/телефон с паролем и авторизуется. Вроде как всё просто, но во встроенном UIWebView страница авторизации выглядела криво, поля ввода впритык примыкали к правому краю страницы.

Yeah!
Opera Dragonfly можно вызвать по сочетанию клавиш Ctrl+Shift+I, или использовать пункт "Проинспектировать элемент" в контекстом меню по правому клику на любом элементе страницы в Opera.

А решение то простое =) Нужно немного подправить css некоторых элементов, чтобы добиться нормального отступа. Страницу я вывел в лог и посмотрел её в браузере Opera, там есть удобный для меня Dragonfly. Средства разработчика аналогичные Dragonfly есть во многих, если не во всех, браузерах, так что стоит поискать в своем любимом браузере такую опцию.

С помощью Opera Dragonfly я разобрал страницу и понял какие параметры css у каких элементов можно попробовать изменить. Но... как?

UIWebView сообщает своему делегату о том что он закончил загрузку страницы, отправляя ему сообщение – webViewDidFinishLoad:.
– stringByEvaluatingJavaScriptFromString: выполняет javascript-код, ограничения: на выполнение 10сек и 10мб памяти.

Страница загружается из внешнего источника, разве что организовывать соединение своими силами, получать страницу, встраивать в неё код и загружать в UIWebView уже модифицированную страницу. Это никак не входило в мои планы, у меня была уже готовая библиотека, которую можно было использовать с другими сервисами, для которых механизм авторизации реализован на базе протокола OAuth 2.0. И тут я вспомнил что существует возможность выполнить произвольный javascript-код после того как страница загружена.

В итоге у меня получился следующий код:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('login_submit').setAttribute(\"style\",\"padding-right: 1.2em;\");"];

После того как страница загружена в UIWebView для элемента с id=login_submit, внутри которого лежат поля ввода, я установил значение padding-right равным 1.2em. Значение я подобрал экспериментально.

Таким же образом можно получать различные данные из страницы, например содержимое определенных div или их параметры.

К списку постов   На главную
comments
Комментарии закрыты.