gpt4 book ai didi

iPhone UIWebView loadHtmlString 未添加到历史记录

转载 作者:可可西里 更新时间:2023-11-01 03:07:10 25 4
gpt4 key购买 nike

我的 UIWebview 使用 loadHtmlString 加载本地 html 文件。加载的页面有指向其他本地 html 文件的链接以及使用互联网的真实链接。

我添加了一个后退按钮:

if ([self.webView canGoBack]) [self.webView goBack];

除了无法识别使用 loadHtmlString 加载的原始页面外,它工作正常。

例如,如果我导航:
本地 -> 本地 -> 网页
local X local <- web(第一个返回有效,下一个什么都不做。)

如何让 webview 识别原始页面,以便后退按钮也适用于它?我能以某种方式将它添加到 webview 的历史记录中吗?

提前致谢!

最佳答案

我遇到了同样的问题。我尝试管理历史记录,但它很容易出错。现在我发现了一个更好的解决方案。

您要做的只是简单地向 about:blank 添加一个 loadRequest,并在调用 loadHTMLString/loadData 之前将其作为占位符。然后你就完全不用监视历史了。 webview.canGoBack 和 canGoForward 将正常工作。当然,您需要一个 hack 来处理返回占位符 about:blank。您可以在 webViewDidFinishLoad 中执行此操作。这是代码亮点:

在调用 loadHTMLString 时的函数中:

[weakSelf.fbWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
[weakSelf.fbWebView loadHTMLString:stringResponse baseURL:url];

处理返回的代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if ([webView.request.URL.absoluteString isEqualToString:@"about:blank"]
&& ![webView canGoBack] && [webView canGoForward]) {
[weakSelf.fbWebView loadHTMLString:stringResponse baseURL:url];
}
}

我认为也可以扩展此解决方案以处理那些不是第一次加载的 loadHTMLString。只需让 Stack 记录所有字符串响应并在每个 loadHTMLString 上插入一个 about:blank 即可。并在每次返回 about:blank 时弹出堆栈。

关于iPhone UIWebView loadHtmlString 未添加到历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13754153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com