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

WKWebView,用于在iOS 10中知道DOM何时就绪的委托方法

WKWebView是苹果公司推出的一种用于在iOS 10及以上版本中展示网页内容的控件。它是基于WebKit引擎的一部分,提供了更快速、高效、安全的网页浏览体验。

WKWebView提供了一系列的委托方法,用于在网页加载过程中获取相关信息,包括DOM何时就绪。其中,可以使用WKNavigationDelegate协议中的webView(_:didFinish:)方法来判断DOM何时就绪。

示例代码如下:

代码语言:swift
复制
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.navigationDelegate = self
        view = webView
        
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    // 网页加载完成时调用
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        // DOM已经就绪,可以进行相关操作
        // 在这里执行你的代码
    }
}

在上述示例中,我们创建了一个WKWebView实例,并设置了navigationDelegate为当前视图控制器。然后,通过load(request)方法加载指定的URL。当网页加载完成时,webView(_:didFinish:)方法会被调用,我们可以在该方法中执行相关操作。

WKWebView的优势在于其性能优化和安全性。它支持现代的Web标准,提供了更快速、流畅的网页浏览体验。此外,WKWebView还提供了与JavaScript的交互能力,可以通过JavaScript与网页进行数据交换和操作。

在腾讯云中,推荐使用腾讯云移动浏览优化(MBO)产品来提升WKWebView的性能和体验。MBO可以对网页内容进行优化,减少加载时间,提高用户体验。你可以通过访问以下链接了解更多关于腾讯云移动浏览优化产品的信息:

腾讯云移动浏览优化(MBO)产品介绍

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

相关·内容

iOS小技能:WKWebView与JS交互

前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebViewWKScriptMessageHandler实现iOS与JS交互 WKWebView是AppleiOS8推出Webkit...:-viewWillAppear:方法中执行add 监听,-viewWillDisappear:方法中执行remove 监听。...但只有整个webView加载完成之后调用此方法才会有响应 2.1 执行JS iOS使用WKWebView-evaluateJavaScript:completionHandler:方法执行拼接好JS...WKWebView每次加载请求完成后会调用此方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation...iOS 端使用 WKWebView 进行渲染WKWebView 在内部采用是分层方式进行渲染,它会将 WebKit 内核生成 Compositing Layer(合成层)渲染成 iOS一个

5.7K30

分享超详细 WKWebView 开发和使用经验

如果将 html-demo 目录放置 tmp 目录下 通过 [WKWebView loadRequest:] 方法访问 index.html 的话,既能访问 common 下资源,也能访问 relative-common...context:NULL]; 注意:添加观察者模式后,一定要在合适时机将观察者模式移除,否则在 iOS10 以下设备会造成崩溃,原因是 WKWebView 释放时候,扔被强持有观察者。...可以在任何时机移除,移除后对应js代码也会移除。...选择粒度 WKSelectionGranularity 用户可以交互选择web视图中内容粒度级别.默认是 WKSelectionGranularityDynamic 暂时不知道用于什么场景之下。...iOS 13 新增方法 contextMenu 处理方法 contextMenu 相关处理方法,暂时不理解在手机端有何用处。 FAQ WKWebView 中 H5 css 动画失效问题?

4.6K30

技术 | Hybrid载体变化(一)

iOS角度上来说载体从UIWebView变成了WKWebView,Android有着他们自研X5当然原生内核,如果你用着Android7.0也不见得会卡,这才是小程序能出来根本原因,没有载体,...今天,我们谈一谈iOS载体“WKWebView”,有兴趣朋友可以直接阅读:https://developer.apple.com/reference/webkit/wkwebview ,当然你也可以接着往下看...,我对于他理解,苹果在iOS8中推出新框架“Webkit”,其中WKWebView就是用来替换原来UIWebView,一句话,你用它原来UIWebView出现各种问题都被解决了。...初始化WKWebView时你还需要配置一个Conf,这个Conf中你可以添加一个属性,这个属性JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp...我们知道WKWebView是一个独立进程,它请求都不经过系统URL SYSTEM,我们很难拦截它,该怎么办?

83330

同层渲染

那么这样层级就带来了一些问题: 原生组件层级是最高:页面中其他组件无论设置 z-index 为多少,都无法盖原生组件上; 部分 CSS 样式无法应用于原生组件; 原生组件无法 scroll-view...WKWebView 在内部采用是分层方式进行渲染,它会将 WebKit 内核生成 Compositing Layer(合成层)渲染成 iOS一个 WKCompositingView,这是一个客户端原生...DOM 节点高度子节点,WKWebView 会为该 DOM 节点生成一个 WKChildScrollView,与 DOM 节点存在映射关系。...这是一个原生 UIScrollView 子类,也就是说 WebView 里滚动实际上是由真正原生滚动组件来承载WKWebView 这么做是为了可以让 iOS WebView 滚动有更流畅体验...根据 WKWebView 该特性,我们便可以建立 H5 组件与原生组件之间映射关系,并且保证原生组件与 H5 组件同一个层级上。

1.3K21

wkwebview加载完成_【Swift】WKWebView与JS交互使用

二、WKWebView 支持更多HTML5特性 高达60fps滚动刷新频率与内置手势 与Safari相容JavaScript引擎 性能、稳定性方面有很大提升占用内存更少 协议方法及功能都更细致...三、WKWebView代理方法 /*!...// message.body 传递数据 } 3、js中点击按钮,进行弹窗实现 //MARK:WKUIDelegate //此方法作为jsalert方法接口实现,默认弹出窗口应该只有提示消息...let js = "document.getElementsByTagName('h2')[0].innerText = '这是一个iOS写入方法'"; //将js注入到网页中 6、js获取DOM节点几种方式...JavaScriptCore 这个库是 Apple iOS 7 之后加入到标准库,它对 iOS Native 与 JS 做交互调用产生了划时代影响。

5.5K00

写写对于Web开发需要知道 2017 WWDC

一年一度2017WWDC,想来对于我们Web开发者来说还是有很多可圈可点更新需要我们学习,特别是Hybrid领域开发同学们,要知道,这些知识点就是这一年里,你可能会使用到。...协议来处理自定义URL Scheme,这相当于是一个简化版NSURLProtocol,不过从今天视频来看 Customized Loading in WKWebView ,很遗憾它还不能处理系统已有的...Scheme,比如http等 新增了 takeSnapshot(with:completionHandler:) 方法用来捕获网页快照 新增了 WKContentRuleList 用于处理一组Web内容规则列表...Web应用程序客户端性能问题,以及收集网页上每一个资源全部网路计时详细测量结果 如果你关注过PWA那么你应该知道一个将Web应用添加到主屏幕特性,没错,iOS很早之前就支持这个特性,不过此刻,...,就说一下摘要吧,比如“可以检查WebSocket”连接,“由右向左布局”,“DOM断点”,“XHR断点”,至于扩展是新增了 if-top-url,unless-top-url这两个trigger,它们会在正则表达式和文档

53530

小程序iOS客户端框架——控件事件逻辑框架与控件原生化(下)

,让开发者具有更广阔开发想象空间;输入控件分别引入了iOS原生UITexField和UITextView,提供了HTML输入框无法满足定制化输入键盘等功能。...为了解决这一问题,客户端尝试对WKWebView解析HTML元素原理进行分析,WKWebView进行HTML解析时,会根据页面DOM元素WKWebView控件下生成对应iOS原生控件,通过分析,...WKWebView解析HTML客户端生成对应原生控件示例) 如上图所示,WKWebView将在解析HTML时将该标签位置生成一个对应UIScrollView控件。...插入DOM节点后原生控件事件处理。由于WKWebView会接管用户所有操作事件,因此按照上述方案插入后,原生控件是无法响应用户事件。...因此需要对事件做特殊处理:通过重载WKWebViewhitTest方法方法处理逻辑中优先处理网页上事件,如果网页未处理,再传递给原生控件。 8.

2.8K40

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

不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView ,iOS8 后用...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...这种方法可以比较有效减少 WebView App中首次打开时间。当用户访问页面时,不需要初始化 WebView 时间。 当然这也带来了一些问题,包括: 额外内存消耗。...独立web进程,与主进程隔开 参考文章:《WebView常用优化方案》 这个方法被运用于类似 qq ,微信这样超级 app 中,这也是解决任何 WebView 内存问题屡试不爽方法 对于封装

3.1K00

iOS开发】从 UIWebView 到 WKWebView

③为什么现在是时候从 UIWebView 迁移到 WKWebView 了: 截止到我写这篇文章时候,据 mixpanel 数据,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%...WKWebViewiOS 8 之后才有的 WebKit 中内容,所以之前我们要同时兼容 iOS 7 和 iOS 8 时候,可以推辞说 UIWebView 和 WKWebView 一起做太麻烦了...正文 常用代理方法 WKWebView 中,UIWebViewDelegate 与 UIWebView 被重构成了14类与3个协议,下面给出一些 UIWebView 中常用方法 WKWebView...JS交互 UIWebView 中,一句简单webView.stringByEvaluatingJavaScriptFromString() 就可以用 JS 脚本操纵 WebView, WKWebView...下面的示例代码用于WKWebView 中获取网页中文本。

1.7K20

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

不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...独立web进程,与主进程隔开 参考文章:[《WebView常用优化方案》] (https://www.jianshu.com/p/f64e1b1c90d9) 这个方法被运用于类似 qq ,微信这样超级...app 中,这也是解决任何 WebView 内存问题屡试不爽方法 对于封装 webactivity , manifest.xml 中设置。

2.3K20

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

不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...独立web进程,与主进程隔开 参考文章:[《WebView常用优化方案》] (https://www.jianshu.com/p/f64e1b1c90d9) 这个方法被运用于类似 qq ,微信这样超级...app 中,这也是解决任何 WebView 内存问题屡试不爽方法 对于封装 webactivity , manifest.xml 中设置。

2.6K20

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

不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...独立web进程,与主进程隔开 参考文章:[《WebView常用优化方案》] (https://www.jianshu.com/p/f64e1b1c90d9) 这个方法被运用于类似 qq ,微信这样超级...app 中,这也是解决任何 WebView 内存问题屡试不爽方法 对于封装 webactivity , manifest.xml 中设置。

2.3K30

《移动端本地 H5 秒开方案探索与实现》

一般页面 dom 渲染后才能展示,可以发现,H5 首屏渲染白屏问题原因关键在于,如何优化减少从请求下载页面到渲染之间这段时间耗时。...适用于进行页面跳转场景。 字符串替换: 客户端读取本地 H5后,通过对 H5 中约定标记位进行字符串替换,然后加载展示页面。适用于没有复杂交互,只通过页面渲染数据场景。...屏蔽webview HTML 内容自动识别 IOS webView 中默认会自动检测 HTML 中手机号、email、地址格式并标记。...但是使用 WKWebView 加载本地 HTML 时也有一些兼容问题, iOS8 不能在 HTML 文件中引用本地 css 或者 js 或者图片文件,IOS8 以上是正常,可以引用远程资源。...还有iOS8中,使用一些远程 cdn css 或者 js 文件,必须注意在引用标签上加上 charset属性,不然 css 和 js 库将会乱码 五、最后 从前端优化,到客户端缓存,到离线包,到更多细节优化

5.3K162

深入小程序系列之一:小程序核心原理及模拟

本文将介绍小程序核心视图层逻辑层分离架构,并通过 iOS 代码来模拟这种双线程模型。...逻辑层 Service 是用主要用于执行小程序 JS 逻辑。主要负责小程序事件处理、API 调用和生命周期管理。...视图层和逻辑层分离有很多好处: 方便多个小程序页面之间数据共享和交互。 小程序生命周期中具有相同上下文可以为具备原生应用程序开发背景开发人员提供熟悉编码体验。...因为 JS Service 层执行,所以 JS 里面操作 DOM 将不会对 View 层产生影响,所以小程序是不能操作 DOM 结构,这也就使得小程序性能比传统 H5 更好。...这里对返回数据进行处理 }) // 向JS Bridge发布数据 // eventName: 用于标识事件名 // data: 为传递数据 JSBridge.publish('PAGE_EVENT'

1.6K61

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

在上篇文章中讲述了使用UIWebView拦截URL方式来处理JS与OC交互。 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView。...除了代理方法WKWebView使用不太一样,关于WKWebView更详尽讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...提醒:WKWebViewiOS 8 推出WebKit.framework中控件,只有app 不需要兼容iOS 7及以下时候才可以使用。 先看动态效果图: ?...如果在HTML中要使用alert等弹窗,就必须得实现UIDelegate相应代理方法。 3.iOS 9之前,WKWebView加载本地HTML会有一些问题。...例如,我JS中要显示alert 弹窗,就必须实现如下代理方法,否则alert 并不会弹出。

3.4K50

WKWebView详解

iOS 8.0和OS X 10.10开始,建议使WKWebView应用程序中展示web内容,建议不要使用UIWebView或WebView。...9.0+是否允许按住链接就展示链接预览 @property(nonatomic) BOOL allowsLinkPreview; iOS上,这个属性只支持3D Touch设备上支持 iOS...当选择是单一块中时粒度可能是单个字符,当选择不是局限于单一块,粒度可能是一个块 WKUserInterfaceDirectionPolicy 用于确定WebView中用户界面元素方向性策略。...典型就是确认和取消)和一个输入框 通知app网页DOM窗口已经关闭 - (void)webViewDidClose:(WKWebView *)webView; app应该从控件关系中移除这个WebView...一组方法定义了您可以应用于快速选择操作和快速选择操作组样式,并定义了一个只读访问器,用于用户可见快速选择操作标题。

19.8K193

iOS下JS与原生OC互相调用(总结)

关于这种方式调用OC方法,唐巧早期有篇文章有过介绍: 关于UIWebView和PhoneGap总结 方式二 iOS 7之后,apple添加了一个新库JavaScriptCore,用来做JS交互,..."]; 再然后定义好JS需要调用方法,例如JS要调用share方法: 则可以UIWebView加载url完成后,在其代理方法中添加要调用share方法: - (void)webViewDidFinishLoad...官方推荐使用WKWebViewevaluateJavaScript:completionHandler:代替这个方法。...iOS下JS与OC互相调用(一)--UIWebView 拦截URL iOS下JS与OC互相调用(二)--WKWebView 拦截URL iOS下JS与OC互相调用(三)--MessageHandler...(六)--WKWebView + WebViewJavascriptBridge iOS下JS与OC互相调用(七)--Cordova 基础 iOS下JS与OC互相调用(八)--Cordova详解+实战

4.9K30

JS Bridge 通信原理

URL Scheme URL Scheme 是一种特殊 URL,一般用于 Web 端唤醒 App,甚至跳转到 App 某个页面,比如在某个手机网站上付款时候,可以直接拉起支付宝支付页面。...iOS 里面又需要区分 UIWebView 和 WKWebView 两种 WebView: ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) WKWebViewiOS8 之后出现,...,根据这些去调用 Native 方法 return true; } } iOS iOS 侧需要区分 UIWebView 和 WKWebView 两种方式。...iOS WKWebView WKWebView 里面通过 addScriptMessageHandler 来注入对象到 JS 上下文,可以 WebView 销毁时候调用 removeScriptMessageHandler...然后 Native 会去调用 JS 方法,获取队列里面所有需要执行方法。 所以我们需要事先创建好一个 iframe,插入到 DOM 里面,方便后续使用。

4.7K50
领券