2010-01-15 24 views
8

我需要在頁面開始加載/執行之前對每個頁面進行一些更改。如何檢測UIWebView中的頁面更改並在開始加載之前執行某些操作?

首先,我嘗試使用-webView:shouldStartLoadWithRequest:但這不起作用,因爲它也被稱爲XHR請求和iframe請求。其次,我嘗試使用-webViewDidStartLoad:並將webView.request與之前的值比較,以查看它是否發生了變化。這不起作用,因爲webView.request僅在通話結束後才更新。

還有什麼想法?

回答

0

製作一個類別或擴展UIWebview來覆蓋loadRequest,首先執行您的操作,然後執行標準的loadRequest。

+0

這將無法正常工作......頁面也可以因爲30x重定向,元重定向,JS設置window.location等而改變...... – 2010-01-22 11:32:40

+0

啊所以你要設置一個過濾器在stringByEvaulatingJavaScriptFromString :或者從DOM樹中獲取更詳細的數據? – 2010-01-22 14:48:39

1

您是否嘗試過使用KVO觀察UIWebView.request

10

在webView的請求對象:shouldStartLoadWithRequest:有兩個屬性,

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

如果加載URL不等於要加載比主文檔(可能是一個iFrame)其他東西mainDocumentURL。

相關問題