Думаю это не совсем удачное решение вешать на onclick свою функцию. Во-первых, можем нарушить функционал сайта, переписав нужные onclick, во вторых не все переходы через тег "a". Используя jquery или обычный js можно повесить события на клики любой области и тега, а также отправлять асинхронные ajax-запросы. Тут все сложно вообщем, когда тоже исследовал это и пробовал. Сайты по сложности разные бывают для браузера...
Тест показал, что кнопка назад (goBack) странно работает с протоколом:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request вызывается и возвращает YES, но потом - (void)startLoading не вызывается и не могу отловить это событие по кнопке назад. Кнопка вперед работает норм вроде. Т.е. не все запросы этот класс отрабатывает почему-то на m.vk.com. С чем это связано интересно и как исправить?
Я также делаю через NSUrlProtocol, есть свой класс (писал выше тут UIWebView: как отловить событие загрузки страниц на ajax-сайтах?), но проблема в том, что он как раз таки не все вызовы перехватывает и плюс ко всему трудно среди всех ресурсов которые проходят загрузку через этот класс идентифицировать URL страницы перехода (писал выше опять же).
-(NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
не дергается.... проверил... также не могу отловить событие перехода по m.vk.com через кнопки назад/вперед (в протоколе тоже не вызываются методы). Но в сафари как-то отлавливаются эти события... Как же тут быть?
Проблем с навигацией нет. Методы goBack goForward отрабатывают отлично на подобных сайтах. Тоже рою в сторону NSURLProtocol, но почему-то
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
не вызывается, когда в m.vk.com нажали второй раз на одну и туже фотку.
Рою в сторону NSURLProtocol. Он перехватывает все запросы из UIWebView. Единственно, что нет никакой реакции + (BOOL)canInitWithRequest:(NSURLRequest *)request не вызывается вообще - на сайте m.vk.com когда второй раз кликнули на фото. Может что-то где-то кешируется...