2012-06-06 78 views
19

我需要清理UIWebView的內容(爲了重用它),但我在委託方法中有一些驗證處理代碼,所以我不想加載一個像about:blank這樣的空白頁來清理它,因爲它將觸發我的身份驗證處理代碼。那麼有沒有辦法做到這一點? (另外,通過重用它,我需要在Web視圖頂部放置一個微調器,當它加載另一個頁面時,我不希望用戶看到以前加載的頁面內容,所以這就是爲什麼我需要清理它)如何在不加載空白頁面的情況下清理UIWebView的內容?

謝謝!

回答

66

你可以用下面這行代碼:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; 

希望這是你想要的。

+1

是的,我知道這一點,但是我問的是如果你閱讀我的問題沒有加載「about:blank」的方法。非常感謝! – hzxu

+0

你不能做你想做的事情,你必須這樣做沒有任何其他方式來做到這一點。 –

+1

我認爲這應該被標記爲答案。 – neevek

25

這並獲得成功對我來說:

[webView stringByEvaluatingJavaScriptFromString:@"document.open();document.close()"]; 
+1

太棒了!這是目前這個主題最好,最快的解決方案。謝謝! –

+0

太棒了!非常快! –

+1

我發現這個解決方案阻止我的主線程長4秒,同時清理一個大的webview。 –

7

嘗試了這一點。這爲我工作

[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"]; 
+0

這正是我需要的。非常感謝。 – Deepak

+0

絕對是最快的方式!謝謝 – dreampowder

0

如果你唯一的問題是,微調消失,當你加載一個空白頁面,您可以在webViewDidFinishLoad使用此代碼:

– (void)webViewDidFinishLoad:(UIWebView *)currentWebView { 
    if (![currentWebView.request.URL.description isEqualToString: @"about:blank"]) { 
     self.mySpinner.hidden = YES; 
    } 
} 

...那麼微調會直到你的webview實際完成加載。

相關問題