首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS UIWebView goback或goforward总是自动重新加载webView,我如何停止webview重新加载?

在iOS中,UIWebView是一个用于显示网页内容的视图控件。当我们调用goback或goforward方法时,UIWebView会自动重新加载网页内容,这可能会导致一些不必要的性能消耗。如果我们想停止UIWebView重新加载网页,可以尝试以下方法:

  1. 使用WKWebView代替UIWebView:WKWebView是iOS 8及以上版本引入的新的网页视图控件,相比UIWebView具有更好的性能和功能。在WKWebView中,可以通过设置navigationDelegate来控制网页加载行为,具体可以通过以下代码实现:
代码语言:txt
复制
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: view.bounds, configuration: webConfiguration)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    // 控制网页加载行为
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if navigationAction.navigationType == .back || navigationAction.navigationType == .forward {
            decisionHandler(.cancel) // 取消加载
            return
        }
        decisionHandler(.allow) // 允许加载
    }
}
  1. 拦截请求并取消加载:通过UIWebView的delegate方法可以拦截网页加载请求,并决定是否取消加载。具体可以通过以下代码实现:
代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UIWebViewDelegate {
    var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView = UIWebView(frame: view.bounds)
        webView.delegate = self
        view.addSubview(webView)
        
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.loadRequest(request)
    }
    
    // 拦截请求并取消加载
    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
        if navigationType == .backForward || navigationType == .forward {
            return false // 取消加载
        }
        return true // 允许加载
    }
}

通过以上方法,我们可以控制UIWebView或WKWebView的网页加载行为,从而停止自动重新加载网页内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WKWebView

可以使用stopLoading方法来停止页面的加载,使用loading属性来查看是否正在加载。 要允许用户在Web历史页面中前进或者后退,要为按钮设置goBack或者goForward的动作。...重新加载当前页面。 - reloadFromOrigin。重新加载当前页面,如果可能,使用缓存验证条件执行端到端重新验证。 - stopLoading。停止加载当前页面所有资源。...实例方法 - goBack。导航到后退列表的后退项中。 - goForward。导航到后退列表的前进项中。 - reload。重新加载当前页面。 - reloadFromOrigin。...重新加载当前页面,如果可能,使用缓存验证条件执行端到端重新验证。 - stopLoading。停止加载当前页面所有资源。...WKWebView,然后自动重新加载页面。

6K20

iOS学习巩固笔记-UIWebViewJavaScript

1 UIWebView简介 UIWebViewiOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但能加载远程的网页资源,还能加载绝大部分的常见文件...UIWebView常用属性和方法 重新加载(刷新) - (void)reload; 停止加载 - (void)stopLoading; 回退 - (void)goBack; 前进 - (void)goForward...,代表停止加载请求,返回YES,代表允许加载请求 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest...网页操控相关方法 [self.webView goBack]; //回退 [self.webView goForward]; //前进 [self.webView reload];...:(UIWebView *)webView //网页加载完毕之后会调用该方法 -(void)webViewDidFinishLoad:(UIWebView *)webView //网页加载失败调用该方法

1.2K70
  • iOSUIWebView的使用详解 原

    iOSUIWebView的使用详解 一、初始化与三种加载方式      UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种...- (void)stopLoading; 停止加载数据 - (void)goBack; 返回上一级 - (void)goForward; 跳转下一级 @property (nonatomic, readonly...0); 设置视频是否自动播放 @property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0); 设置音频播放是否支持...)navigationType; 准备加载内容时调用的方法,通过返回值来进行是否加载的设置 - (void)webViewDidStartLoad:(UIWebView *)webView; 开始加载时调用的方法...- (void)webViewDidFinishLoad:(UIWebView *)webView; 结束加载时调用的方法 - (void)webView:(UIWebView *)webView didFailLoadWithError

    77820

    UIWebView 浏览器控件一、初始化与三种加载方式二、常用属性和方法三、代理方法 UIWebViewDelegate四、其它案例:

    :(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如加载百度的主页 UIWebView * view...= NO; 方法: 1.重新加载数据 - (void)reload; 2.停止加载数据 - (void)stopLoading; 3.返回上一级 - (void)goBack; 4.跳转下一级 - (...发送一个请求之前都会先调用这个方法,监听准备加载内容时调用,通过判断请求等参数来返回不同返回值判断是否加载该网页,是JS中执行OC代码的桥梁 - (BOOL)webView:(UIWebView *)webView...- (void)webViewDidStartLoad:(UIWebView *)webView; 3.网页加载完毕执行的方法,一般在里面执行JS代码(删除一些节点),相当于网页JS的window.onload...:js];} 补充:用JS删除,浏览器的console中调试 (1)按标签名删除 (2)按类删除 4.加载失败时调用的方法 - (void)webView:(UIWebView *)webView didFailLoadWithError

    1.5K60

    iOS监听H5页面goBack返回事件 & 网页监听APP返回键 (NavigationBackItemInjection)

    1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 2.1 原理 2.2 例子 什么时候会触发这个返回事件?...解决方案: 1、iOS监听H5页面goBack返回事件 2、直接使用Safari打开URL 相关文章: iOS 封装WebView 控制器https://kunnan.blog.csdn.net/article.../details/114832679 I 、 iOS监听H5页面goBack返回事件 方式一:通过与JS的桥接,让h5主动通知你的 如果是采用通过与JS的桥接,让h5主动通知你的方案,请看这两篇文章 1...相关的返回类型及方法 1、UIWebViewNavigationTypeBackForward 2、canGoBack:判断当前H5界面是否可以返回的方法 3、goBack: 返回上一个界面 4、goForward...监听H5页面goBack返回事件 UIWebView,可通过UIWebViewNavigationTypeBackForward来监听返回事件 - (BOOL)webView:(UIWebView

    5.9K21

    iOS下JS与OC互相调用(一)--UIWebView 拦截URL

    去年也写过一个相互调用的总结:iOS下JS与原生OC互相调用(总结)。 写的比较粗糙,因此准备新开一个目录专题来记录JS 与原生交互的处理方式。...UIWebView 拦截URL 之前就使用的是UIWebView + 拦截URL 的方式实现的JS与OC 交互。 原因是因为要兼容iOS 6。 1.创建UIWebView,并加载本地HTML。...return YES,webView 就会加载这个链接;return NO,webView 就不会加载这个连接。我们就在这个拦截的代理方法中处理自己的URL。...这是的示例代码: #pragma mark - UIWebViewDelegate - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest..."]) { [self goBack]; } } 顺便看一下如何将结果回调到JS中: - (void)getLocation { // 获取位置信息 /

    3.6K40

    iOS中WebKit框架应用与解析 原

    iOS中WebKit框架应用与解析 一、引言         在iOS8之前,在应用中嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序中...关于UIWebView的相关使用,在前面的博客中有详细介绍,地址如下。 UIWebView的使用详解:http://my.oschina.net/u/2340880/blog/469916。...(nullable WKNavigation *)reloadFromOrigin; //停止加载 - (void)stopLoading; //执行JavaScript代码 - (void)evaluateJavaScript...{ } //主页加载完成时调用 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{...:(NSError *)error{ } //主页数据加载发生错误时调用 -(void)webView:(WKWebView *)webView didFailProvisionalNavigation

    1.9K40

    WKWebView 那些坑

    作者:林泽水 导语 WKWebView是苹果在WWDC 2014上推出的新一代webView组件,用以替代UIKit中笨重难用、内存泄漏的UIWebView, 拥有60fps滚动刷新率、和safari...中,而IOS10上,JS执行document.cookie服务器set-cookie注入的Cookie会很快同步到NSHTTPCookieStorage中,FireFox工程师曾建议通过reset WKProcessPool...request3,最后将加载结果返回WKWebView; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5页面元素位置向下偏移被拉伸变形,追踪后发现主要是H5页面高度值异常导致...实际上,即便在UIWebView上也不建议调整webView.scrollView.contentInset的值,这确实会带来一些奇怪的问题。...8.2、goBack API问题 WKWebView上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload()函数、不会执行JS。

    17.3K21

    WKWebView 那些坑

    导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨重难用、内存泄漏的 UIWebView。...中,而在 iOS 10 上,JS 执行 document.cookie 服务器 set-cookie 注入的 Cookie 会很快同步到 NSHTTPCookieStorage 中,FireFox...request3,最后通过 NSURLProtocolClient 将加载结果返回 WKWebView; 5、WKWebView 页面样式问题 在 WKWebView 适配过程中,我们发现部分H5页面元素位置向下偏移被拉伸变形...实际上,即便在 UIWebView 上也不建议直接调整webView.scrollView.contentInset的值,这确实会带来一些奇怪的问题。...8.2、goBack API问题 WKWebView 上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload()函数、不会执行JS。

    4.6K130
    领券