2010-01-15 7 views
8

Ho bisogno di fare qualcosa su ogni cambio di pagina, prima che la pagina inizi a caricare/eseguire.Come rilevare il cambio di pagina in UIWebView e fare qualcosa prima che inizi a caricarsi?

In primo luogo, ho provato a utilizzare -webView:shouldStartLoadWithRequest: ma non funzionerà, perché è anche chiamato per richieste XHR e richieste iframe.

In secondo luogo, ho provato a utilizzare -webViewDidStartLoad: e confrontare webView.request al suo valore precedente, per vedere se è cambiato. Questo non funziona, perché webView.request viene aggiornato solo qualche tempo dopo la chiamata.

Altre idee?

risposta

0

Creare una categoria o estendere UIWebview che sovrascrive loadRequest, eseguendo prima l'operazione e quindi eseguendo il carico standardRequest.

+0

Che non funziona ... la pagina può anche essere modificata a seguito di un reindirizzamento 30x, meta reindirizzamento, impostazione JS window.location, ecc ... –

+0

Ah, quindi si desidera impostare un filtro su stringByEvaulatingJavaScriptFromString : o ottieni dati più dettagliati dall'albero DOM? –

1

Hai provato a utilizzare KVO per osservare UIWebView.request?

10

l'oggetto della richiesta in WebView: shouldStartLoadWithRequest: ha due proprietà,

BOOL iframe = ![request.URL isEqual:request.mainDocumentURL]; 

Se l'URL da caricare non è uguale al mainDocumentURL che si sta caricando qualcosa di diverso da doc principale (probabilmente un iFrame).

Problemi correlati