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

WKWebView详解

WKUserContentController WKUserContentController对象提供了一种WebView发送JavaScript消息或者注入JavaScript脚本的方法 添加WKScriptMessageHandler...任何一个与正在加载的网页拥有相同WKSecurityOrigin的URL加载是一个First Party加载。First Party网页可以访问彼此的脚本和数据库资源。...路径文件路径下创建一个Store并返回 + (instancetype)storeWithURL:(NSURL *)url; 当创建时,Store的内容从该路径下的所有编译过的规则列表加载 新增的变化,...通常,显示名称是来自资源的SecurityOrigin的域名加后缀。...选择此值将自动包含添加到这个常量的任何新的检测类型 WKURLSchemeHandler 用来处理WebKit无法处理的URL Scheme类型的资源 开始加载特定资源时调用 - (void)webView

19.9K193
您找到你想要的搜索结果了吗?
是的
没有找到

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

: baseURL:会影响网页加载过程中 css、js、图片等资源文件的相对路径,并不会影响绝对路径。...readAccessURL 参数:允许访问的资源路径,如果是在 Bundle 中加载本地 HTML,则需要设置该 HTML 所在的 Bundle 路径路径设置好后,该目录在 WKWebView 中被视为沙盒目录...通过 [WKWebView loadRequest:] 方法访问 index.html 的话,仅能访问当前页面所在目录下的相对路径资源,无法访问目录外的资源,例如上例中,index.html 仅能访问...通过 [WKWebView loadData:] 和 [WKWebView loadHTMLString:] 方法仅能加载当前HTML内容,无法加载资源文件,这种加载模式下,由于不需要访问其他路径下的资源...添加用户脚本 addUserScript 使用 addUserScript 方法来添加 js 脚本。

4.6K30

​# iOS WKWebView适配(基础篇)

:[self _defaultConfiguration]]; 2.WKWebViewConfiguration类说明 wkwebview初始化时的参数配置 websiteDataStore wkwebview...,还是选择使用本地读取 3.请求内置包(bundle)页面 内置包就是bundle包,就是将bundle包路径拼接好,然后请求沙盒方式读取页面 自定义了一个url头部"bundle://",在请求的时候做...]; 5.离线资源包的一点思考 利用离线加载这一特性,我们可以通过服务端资源打包成本地资源包(zip包),通过服务器比对方式下载资源包,解压后放在本地指定的沙盒目录,随后通过wkwebview加载本地方式打开页面...对于资源包要求 前后端分离(目前前端基本如此) 资源包加载需要相对路径,大部分在线资源都是通过cdn的,如何通过cdn去转换成资源包并打包进来,也是一个挑战,或者直接用cdn包也是可以的 要考虑降级策略...,如果加载失败,资源包出现问题,如何快速替换最新资源包或者回滚。

3.6K30

JS Bridge 通信原理

编辑切换为居中 添加图片注释,不超过 140 字(可选) 这里有个常用 App URL Scheme 汇总:URL Schemes 收集整理 在手机里面打开这个页面后点击这里,就会提示你是否要打开微信。...在 iOS 里面又需要区分 UIWebView 和 WKWebView 两种 WebView: ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) WKWebView 是 iOS8 之后出现的...所以基于上面的例子,我们可以把域名和路径当做通信标识,参数里面的 func 当做指令,callback_id 当做回调函数,其他参数当做数据传递。对于不满足条件的 http 请求不应该拦截。..."taobao")) { // 拿到调用路径后解析调用的指令和参数,根据这些去调用 Native 方法 return true; } } iOS 端 在 iOS...这种方式不依赖拦截,主要是通过 WebView JS 的上下文注入对象和方法,可以让 JS 直接调用原生。

4.7K50

iOS小技能:WKWebView与JS的交互

为userContentController添加ScriptMessageHandler,并指明name //WKUserContentController *userContentController...,第三方会要求参数按照ASCII码从小到大排序。...但不同的是,这一过程中有较多的网络进度的回调工作以及各类网络协议管理,比如资源缓存协议、HSTS 协议、cookie 管理协议等。...WebContent进程:主要负责页面资源的管理,包含前进后退历史,pageCache,页面资源的解析、渲染。并把该进程中的各类事件通过代理方式通知给 UIProcess。...UIProcess进程:主要负责与 WebContent 进行交互,与 APP 在同一进程中,可以进行 WebView 的功能配置,并接收来自 WebContent 进程的各类消息,配合业务代码执行任务的决策

5.7K30

技术 | Hybrid载体的变化(一)

当然随之而来的会有一些小问题,比如:WKWebView是一个独立进程,那么它的请求就无法通过系统的URL SYSTEM了,你无法像UIWebView一样,可以通过NSURLProtocol来拦截所有的请求...”协议的“userContentController”方法,这是从JavaScriptNative发送消息的主要渠道,当然如果你用协议的方式也不是不行,至少这个协议的实现它帮你完成了JavaScript...在初始化WKWebView时你还需要配置一个Conf,这个Conf中你可以添加一个属性,这个属性在JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp...发送消息就更不用说了,直接调用“evaluateJavaScript”方法注入就好,唯一的优势是在于,发送的消息可以先转成JSON,然后字符串化当参数传入到一个函数里,而你的函数真实接收到的是一个对象,...我们知道WKWebView是一个独立的进程,它的请求都不经过系统的URL SYSTEM,我们很难拦截它,该怎么办?

83630

JSB 原理与实践

JSB 原理 要实现双向通信自然要依次实现 Native Web 发送消息和 Web Native 发送消息。...Native Web 发送消息 Native Web 发送消息基本原理上是在 WebView 容器中动态地执行一段 JS 脚本,通常情况下是调用一个挂载在全局上下文的方法。...').innerHTML = 'I am from native'; 敏锐同学到这一步其实就已经知道我们在日常使用 JSB 时客户端是如何调用前端 JS 代码了,我们在刚刚的静态 html 文件中添加几行...字符串长度有限制 性能一般,URL request 创建请求有一定的耗时(Android 端 200-400ms) 实践案例 同样用一个简单的 Demo2 来看一下如何使用拦截式实现 Web Native...参数,若 URL scheme 是 prek 则认为该请求是一个来自 Web 的 JSB 调用: - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction

1.3K10

JSB 原理与实践

JSB 原理 要实现双向通信自然要依次实现 Native Web 发送消息和 Web Native 发送消息。...Native Web 发送消息 Native Web 发送消息基本原理上是在 WebView 容器中动态地执行一段 JS 脚本,通常情况下是调用一个挂载在全局上下文的方法。...').innerHTML = 'I am from native'; 敏锐同学到这一步其实就已经知道我们在日常使用 JSB 时客户端是如何调用前端 JS 代码了,我们在刚刚的静态 html 文件中添加几行...字符串长度有限制 性能一般,URL request 创建请求有一定的耗时(Android 端 200-400ms) 实践案例 同样用一个简单的 Demo2 来看一下如何使用拦截式实现 Web Native...参数,若 URL scheme 是 prek 则认为该请求是一个来自 Web 的 JSB 调用: - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction

3.1K40

iOS中WKWebView交互使用总结

configuration:(WKWebViewConfiguration *)configuration 这个方法就够用了,第一个参数不多说,按照通常的使用就可以,第二个参数是对webView的配置对象...最后通过addSubView添加视图到父视图上面就可以了,这个时候应该是没有加载任何页面的webView。...限制用户选择以及长按操作 ---- 有时候,我们会遇到一个比较头疼的问题,我们不想让用户长按选择或者有弹窗,那么这时我们需要添加两行代码来禁止这一系列行为。...添加进度条 ---- 构建 @property (nonatomic, strong)UIProgressView *progressView; //添加进度条 self.progressView..."] withImage:messageDic[@"img"]]; } //申请试用,带一个参数的情况 if ([message.name isEqualToString:@"mjxApply

2.8K40
领券