我有一个可以通过不同的URL循环的webview。当我从一个切换到另一个时,我希望旧网页在加载下一个之前消失。如何在不重新分配webview的情况下执行此操作?
如果我尝试[self.webView loadHTMLString:@"" baseURL:nil];
并在同一功能中加载我的网址,那么之前的网页仍然存在:
[self.webView loadHTMLString:@"" baseURL:nil];
[self.webView loadRequest:[NSURLRequest requestWithURL:self.pageURL]];
编辑:这显然不够清楚。以下代码不清除webview,它会显示上一页,直到加载新页面为止:
- (void) startLoadOfNextURL:(NSURL*)url
{
// clear:
[self.webView loadHTMLString:@"" baseURL:nil]; //DOESNT WORK
// Load real next URL
NSURLRequest* request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
答案 0 :(得分:7)
您可以加载空白页
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
答案 1 :(得分:7)
您可以在控制器解雇时写下以下代码。
webView.load(URLRequest(url: URL(string:"about:blank")!))
答案 2 :(得分:3)
当您致电- loadHTMLString:baseURL:
时,在加载完成之前它不会阻止。一旦它记录了您的请求,它就会在后台返回并加载。
因此,在开始新的加载请求之前,您需要等待第一次加载完成。
使用UIWebView
,您将使用UIWebViewDelegate
- webViewDidFinishLoad:
。
使用WKWebView,您可以使用WKNavigationDelegate
的{{1}}
如果你真的想在没有委托方法的情况下清除内容,另一种方法是使用JavaScript(例如https://stackoverflow.com/a/4241420/3352624)。然后,对于UIWebView,您可以调用
- webView:didFinishNavigation:
。该方法将阻止执行,直到JavaScript执行并返回。
对于- stringByEvaluatingJavaScriptFromString:
,您需要执行https://stackoverflow.com/a/30894786/3352624之类的操作,因为其WKWebView
不会阻止。
如果你真的只想让“旧网页消失”,你可以暂时用空白的UIView覆盖webview的内容区域。您可以在启动加载时隐藏内容,然后在加载完成后使用上面的委托方法显示内容。
答案 3 :(得分:0)
改为使用JavaScript。
library(tidyverse)
df1 %>%
mutate(num_days = case_when(str_detect(num_days, "Y|M") ~
as.numeric(str_extract(num_days, "\\d+(?=Y)") ) * 365 +
replace_na(as.numeric(str_extract(num_days, "\\d+(?=M)")) * 30, 0),
TRUE ~ as.numeric(num_days) ))
答案 4 :(得分:0)
以下代码清除屏幕,然后导航
快速
webView.evaluateJavaScript("document.documentElement.remove()") { (_, _) in
self.webView.load(urlRequest)
}
答案 5 :(得分:0)
快速
webView.load(URLRequest(url: URL(string: "about:blank")!))
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1, execute: {
//Load request or write code here
})