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

UIWebView didFinishLoading多次触发

UIWebView didFinishLoading 是一个常见的 iOS 开发中的问题。当 UIWebView 完成加载网页时,这个方法会被触发。在某些情况下,这个方法可能会被触发多次,导致不必要的问题。以下是一些可能的原因和解决方案:

原因

  1. 网页中可能存在多个框架或 iframe。
  2. 网页中可能存在异步加载的内容。
  3. 网页中可能存在 JavaScript 重定向。

解决方案

  1. 检查网页源代码,确定是否存在多个框架或 iframe。如果存在,可以考虑使用其他方法来加载网页内容。
  2. 使用 WKWebView 替代 UIWebView。WKWebView 是 iOS 8 引入的新组件,性能更好,并且可以更好地处理异步加载的内容。
  3. 使用代理方法检测网页加载状态,并在加载完成后执行相应的操作。例如:
代码语言:swift
复制
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
    if navigationType == .other {
        // 处理其他类型的加载,例如 JavaScript 重定向
    }
    return true
}

func webViewDidFinishLoad(_ webView: UIWebView) {
    // 处理网页加载完成后的操作
}

推荐的腾讯云相关产品

腾讯云提供了一系列与 UIWebView didFinishLoading 相关的产品,可以帮助开发者更好地管理和监控应用程序。这些产品包括:

以上产品可以帮助开发者更好地管理和监控移动应用程序,并提供更好的用户体验。

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

相关·内容

javascript函数防抖节流,适用于搜索多次触发请求等场景。

document.getElementById('unDebounce'); function fn(e){ ajax(e.target.value) } //防抖函数,处理多次触发的事件...inputa = document.getElementById('unDebounce'); function fn(e){ ajax(e.target.value) } //防抖函数,处理多次触发的事件...函数节流(throttle) 规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。...window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次 throttle 鼠标不断点击触发,mousedown(单位时间内只触发一次) 拖拽事件,每拖动...1px都会触发onmousemove(可以用throttle优化,每秒触发一次) 监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断

1.1K30

uni-app中使用scroll-view滚到底部时多次触发scrolltolower

但是如使用scroll-view导致页面级没有滚动,则触底事件不会被触发,所以这里存在的问题是有时候无法触发onReachBottom。   ...第一个问题就是当滚动条滚动到底部时会多次触发scrolltolower事件,第二个问题是当页面由第一个scroll-view(该页面已经到了的最底部了)切换到第二个scroll-view时会自动滚动到页面的最底部...数据加载多次如下图所示: ?...三、解决方案: 关于页面到最底部多次触发scrolltolower事件解决: 在scrolltolower触发事件中设定一个定时器setTimeout(callback, delay, rest...事件从而改变scrollTop的值,当切换到第二个scroll-view时在默认设置scrollTop为0,那么在切换到第二个页面的同时页面的竖向滚动条的位置会默认滚动到最顶部,从而解决了默认滚动到最底部加载多次数据的问题

7.2K10

WebViewJavascriptBridge源码探究--看OC和JS交互过程

里面是初始js代码      在这个js里面,创建了一个WebViewJavascriptBridge脚本对象,另外创建一个隐藏的iframe标签:每次js调用oc方法,都是修改iframe标签的src来触发..., function(response) { }); } }); 3、点击html标签按钮,触发js事件 //给标签按钮设置点击事件 var...messagingIframe是个iframe标签,点击我们自定义html按钮标签,触发js事件,最后进入callHandler -->  _doSend , 当messagingIframe标签src...重新赋值时,会触发UIWebView的代理方法(src的值一直是:wvjbscheme://__WVJB_QUEUE_MESSAGE__ ,也可自定义,这个在进入oc UIWebView代理方法时会用来作为判断标识...-->  重新赋值iframe标签的src属性,触发UIWebView代理方法, 根据src的值进入相应处理方法中 -->   在oc方法里面调用js方法_fetchQueue, 获取js数组里面所有的参数

3.3K50

JSBridge深度剖析

我们前面讲过了原生的WebView/UIWebView控件已经能够和Js实现数据通信了,那为什么还要JSBridge呢?...而在我们实际的开发中,app不会注册对应的scheme,而是由前端页面通过某种方式触发scheme(如用iframe.src),然后Native用某种方法捕获对应的url触发事件,然后拿到当前的触发url...scheme messagingIframe.src = uri; 注:正常来说是可以通过window.location.href达到发起网络请求的效果的,但是有一个很严重的问题,就是如果我们连续多次修改...有个特性:在UIWebView内发起的所有网络请求,都可以通过delegate函数在Native层得到通知。...这样,我们可以在webview中捕获url scheme的触发(原理是利用 shouldStartLoadWithRequest) - (BOOL)webView:(UIWebView *)webView

3.5K60

Hybrid App 应用 开发中 9 个必备知识点复习(WebView 调试 等)

一、iOS 平台中 UIWebView 与 WKWebView 有什么区别?...UIWebView WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS...document.cookie 或服务器 set-cookie 注入的 Cookie 会很快同步到 NSHTTPCookieStorage 中,FireFox 工程师曾建议通过 reset WKProcessPool 来触发...9. goBack API问题 WKWebView 上调用 -[WKWebView goBack], 回退到上一个页面后不会触发window.onload() 函数、不会执行JS。 10....true); } } 1.3 手机开启 USB 调试选项,并用 USB 连接电脑: 开启 Android 手机的开发者选项,一般在 系统设置 - Android版本 进行多次点击会触发开启开发者选项

3.1K00

H5如何与原生App通信?

的容器,苹果对他的介绍是: UIWebView是一个可加载网页的对象,它有浏览记录功能,且对加载的网页内容是可编程的。...但需要注意的是,Safari浏览器使用的浏览器控件和UIwebView组件并不是同一个,两者在性能上有很大的差距。...从IOS12开始,苹果正式弃用UIWebView,统一采用WKWebView。...然后在客户端内拦截到指定协议头的请求之后就阻止该请求并解析url上的参数,执行相应逻辑 在H5中发起这种特定协议的请求方式分两种: 通过localtion.href; 通过location.href有个问题,就是如果我们连续多次修改...let { data } = e.nativeEvent; //... }} /> RN客户端调用H5 postMessage是双向的,所以也可以在RN里发消息,H5里接消息来触发对应的回调

5.8K20

Hybrid App 应用开发中 9 个必备知识点复习

参考文章:[《UIWebView与WKWebView》] (http://www.cocoachina.com/articles/17337) UIWebView 是苹果继承于 UIView 封装的一个加载...WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...document.cookie 或服务器 set-cookie 注入的 Cookie 会很快同步到 NSHTTPCookieStorage 中,FireFox 工程师曾建议通过 resetWKProcessPool 来触发...9. goBack API问题 WKWebView 上调用 -[WKWebViewgoBack], 回退到上一个页面后不会触发 window.onload() 函数、不会执行JS。 10....WebView.setWebContentsDebuggingEnabled(true); }} 1.3 手机开启 USB 调试选项,并用 USB 连接电脑: 开启 Android 手机的开发者选项,一般在 系统设置 - Android版本 进行多次点击会触发开启开发者选项

2.3K30

网易严选的wkwebview测试之路

UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView是将会逐步取代笨重的UIWebView。且UIWebView存在占用过多内存,js执行效率低等问题。...WKWebView相比于UIWebView   WKWebView的内存远远没有UIWebView的开销大,没有缓存   拥有高达60FPS滚动刷新率及内置手势   支持了更多的HTML5特性   高效的...与UIWebView拆分成了14类与3个协议(以前很多不方便实现的功能得以实现:官方文档说明)   基于以上种种优势,严选APP在年后的第一个版本里实现了UIwebview到wkwebview的大步跨越...会自动去NSHTTPCookieStorage中读取cookie,但是WKWebView并不会去读取,因此导致cookie丢失以及一系列问题,在测试的过程中我们发现在一个活动页面触发了登录之后,返回该页面并没有同步到登录态的信息...UIWebView

1.7K10

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

最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换。顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊。...(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做。) 2.利用WKWebView 的MessageHandler。...UIWebView 拦截URL 我之前就使用的是UIWebView + 拦截URL 的方式实现的JS与OC 交互。 原因是因为要兼容iOS 6。 1.创建UIWebView,并加载本地HTML。...[self.webView loadRequest:request]; [self.view addSubview:self.webView]; 本地的HTML里,我定义了几个按钮,来触发调用原生的方法...2.拦截 URL UIWebView 有一个代理方法,可以拦截到每一个链接的Request。

3.5K40

Hybrid App 应用开发中 9 个必备知识点复习

一、iOS 平台中 UIWebView 与 WKWebView 有什么区别?...参考文章:[《UIWebView与WKWebView》] (http://www.cocoachina.com/articles/17337) UIWebView 是苹果继承于 UIView 封装的一个加载...document.cookie 或服务器 set-cookie 注入的 Cookie 会很快同步到 NSHTTPCookieStorage 中,FireFox 工程师曾建议通过 resetWKProcessPool 来触发...9. goBack API问题 WKWebView 上调用 -[WKWebViewgoBack], 回退到上一个页面后不会触发 window.onload() 函数、不会执行JS。 10....WebView.setWebContentsDebuggingEnabled(true); }} 1.3 手机开启 USB 调试选项,并用 USB 连接电脑: 开启 Android 手机的开发者选项,一般在 系统设置 - Android版本 进行多次点击会触发开启开发者选项

2.6K20

【Hybrid】288- Hybrid App 应用开发中 9 个必备知识点复习

参考文章:[《UIWebView与WKWebView》] (http://www.cocoachina.com/articles/17337) UIWebView 是苹果继承于 UIView 封装的一个加载...WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...document.cookie 或服务器 set-cookie 注入的 Cookie 会很快同步到 NSHTTPCookieStorage 中,FireFox 工程师曾建议通过 resetWKProcessPool 来触发...9. goBack API问题 WKWebView 上调用 -[WKWebViewgoBack], 回退到上一个页面后不会触发 window.onload() 函数、不会执行JS。 10....WebView.setWebContentsDebuggingEnabled(true); } } 1.3 手机开启 USB 调试选项,并用 USB 连接电脑: 开启 Android 手机的开发者选项,一般在 系统设置 - Android版本 进行多次点击会触发开启开发者选项

2.3K20

iOS引入JavaScriptCore引擎框架(一)

中字节码的执行是在基于寄存器的虚拟机中而不是基于栈,好处在于可以方便的在ARM架构处理器中使用三地址指令,减少了次数较多的出栈和入栈等指令分派以及耗时的内存IO;JIT在java虚拟机中应用比较多,针对执行较多次的热点方法进行编译为本地方法...oc端初始化一个js执行上下文JSContext对象很容易, [[JSContext alloc] init]即可,但是在hybrid app中,通过这种方式初始化JSContext与承载页面的UIWebVIew...并不是同一个js环境,因此我们需要获取UIWebView对应的JSContext。...但是这里涉及到一个比较棘手的问题,JSContext的获取实在UIWebView的那个阶段呢?     ...我做过一个测试:首先在UIWebView的webViewDidStartLoad阶段创建JSContext并暴露oc端的方法,在加载一级页面时js正常调用oc的方法,而跳转到二级页面中却无法执行oc的方法

1.5K60
领券