8
votes

Comment détecter le changement de page dans UIWebView et faire quelque chose avant qu'il ne commence à charger?

Je dois faire quelque chose sur chaque changement de page, avant que cette page ne commence à charger / exécuter.

Premier, j'ai essayé d'utiliser -WebView: WraisStartLoadWhithRequest: Mais cela ne fonctionnera pas, car il est également appelé aux demandes de XHR et aux demandes iframe.

Deuxièmement, j'ai essayé d'utiliser -WebViewSartharload: et comparer webview.request à sa valeur précédente, pour voir si elle a changé. Cela ne fonctionne pas, car webview.request est mis à jour seulement un peu de temps après l'appel.

Plus d'idées?


0 commentaires

3 Réponses :


0
votes

Créez une catégorie ou étendre UIWebView qui remplace LOADREQUEST, effectuez votre opération d'abord, puis effectuez le LoadRequest standard.


2 commentaires

Cela ne fonctionnera pas ... La page peut également être modifiée à la suite d'une fenêtre de réglage de la redirection de 30x Redirection, META Redirection, JS.Location, etc ...


Ah vous souhaitez configurer un filtre sur StringByEvaulityJavascriptFromstringFromstring: ou obtenir des données plus détaillées de l'arbre DOM?



1
votes

Avez-vous essayé d'utiliser KVO pour observer uiwebview.request ?


0 commentaires

10
votes

L'objet de la demande dans webview: OptionArtLoadWithRequest: a deux propriétés, xxx

si l'URL à charger n'est pas égale au MaindocumentURL, vous chargez autre chose que le document principal (probablement une iframe) .


0 commentaires