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

UIWebView迁移后WKWebView中显示的链接不起作用

UIWebView是iOS中的一个视图控件,用于显示网页内容。然而,自iOS 8起,Apple推出了WKWebView来替代UIWebView,WKWebView具有更好的性能和功能。

当将UIWebView迁移到WKWebView时,可能会遇到链接不起作用的问题。这可能是由于以下原因导致的:

  1. JavaScript交互问题:WKWebView默认禁用了JavaScript交互,而UIWebView默认启用。如果网页中的链接依赖于JavaScript来处理,需要在WKWebView中启用JavaScript交互。

解决方法:在WKWebView中启用JavaScript交互,可以通过设置WKWebView的configuration属性的preferences属性的javaScriptEnabled属性为true来实现。示例代码如下:

代码语言:txt
复制
let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
webView.configuration.preferences.javaScriptEnabled = true
  1. 跨域问题:WKWebView对跨域访问有更严格的限制。如果链接的域名与当前加载的网页的域名不一致,WKWebView可能会阻止链接的跳转。

解决方法:可以通过设置WKWebView的configuration属性的preferences属性的setValue方法来解决跨域问题。示例代码如下:

代码语言:txt
复制
let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
let preferences = WKPreferences()
preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
webView.configuration.preferences = preferences
  1. 重定向问题:WKWebView对重定向的处理方式与UIWebView有所不同。在某些情况下,WKWebView可能会阻止重定向链接的跳转。

解决方法:可以通过WKNavigationDelegate的相关方法来处理重定向链接。在WKNavigationDelegate的webView(_:decidePolicyFor:decisionHandler:)方法中,可以通过decisionHandler参数来决定是否允许跳转。示例代码如下:

代码语言:txt
复制
class MyNavigationDelegate: NSObject, WKNavigationDelegate {
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let url = navigationAction.request.url {
            // 判断是否是重定向链接
            if url.absoluteString.contains("redirect") {
                // 允许跳转
                decisionHandler(.allow)
                return
            }
        }
        
        // 阻止跳转
        decisionHandler(.cancel)
    }
}

let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
let navigationDelegate = MyNavigationDelegate()
webView.navigationDelegate = navigationDelegate

以上是解决WKWebView中链接不起作用的常见问题的方法。如果以上方法无法解决问题,可能需要进一步检查网页内容、网络连接等方面的问题。

腾讯云提供了一系列与云计算相关的产品,例如云服务器、云数据库、云存储等。这些产品可以帮助开发者构建稳定、高效的云计算解决方案。具体产品介绍和相关链接如下:

  1. 云服务器(CVM):提供可扩展的计算能力,支持多种操作系统和应用场景。了解更多:云服务器产品介绍
  2. 云数据库MySQL版(CDB):提供高可用、可扩展的MySQL数据库服务,适用于各种规模的应用。了解更多:云数据库MySQL版产品介绍
  3. 云对象存储(COS):提供安全、可靠的对象存储服务,适用于存储和处理各种类型的数据。了解更多:云对象存储产品介绍

以上是腾讯云提供的一些与云计算相关的产品,可以根据具体需求选择适合的产品来解决问题。

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

相关·内容

浅谈iOSWKWebViewUIWebView清除缓存问题

https://blog.csdn.net/u010105969/article/details/53943101 最近产品经理在验收项目,在验收过程中发现了一个问题:网页数据存在缓存。...网页中加载是一张图片,在后台将加载图片换掉时候再在App中加载此网页,发现展示图片还是之前图片,并没有更新,而且多次重新加载网页显示还是之前图片,说明缓存很严重。...先说说UIWebView缓存清除,代码只有一句:  [[NSURLCachesharedURLCache]removeAllCachedResponses]; 再说WKWebView缓存清除...WKWebsiteDataStoredefaultDataStore]removeDataOfTypes:websiteDataTypesmodifiedSince:dateFromcompletionHandler:^{     }]; 其中types数组内容是可以选择一些类型...注意:只有在iOS9之后WKWebView才有清除缓存方法,在写代码时候切记对系统版本进行判断。

5.3K10

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

UIWebView WKWebViewUIWebView 区别: WKWebView 内存远远没有 UIWebView 开销大,而且没有缓存; WKWebView 拥有高达 60FPS...库加载并使用, UIWebView 限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView 只在 iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView ,iOS8 后用...WKWebView 页面样式问题 在 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...软件包(下载链接:DebugGap),下载完成解压下来。

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

    WKWebViewUIWebView 区别: WKWebView 内存远远没有 UIWebView 开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...: 大多数App需要支持 iOS7 以上版本,而 WKWebView 只在 iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...resetWKProcessPool 来触发 Cookie 同步到 NSHTTPCookieStorage ,实践发现不起作用,并可能会引发当前页面 session cookie丢失等问题。...WKWebView 页面样式问题 在 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...下载 DebugGap 并配置: 在电脑上面下载 Windows 版本 DebugGap 软件包(下载链接:DebugGap),下载完成解压下来。

    2.3K20

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

    WKWebViewUIWebView 区别: WKWebView 内存远远没有 UIWebView 开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势...UIWebView 限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView 只在 iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8...WKWebView 页面样式问题 在 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...下载 DebugGap 并配置: 在电脑上面下载 Windows 版本 DebugGap 软件包(下载链接:DebugGap),下载完成解压下来。

    2.7K20

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

    WKWebViewUIWebView 区别: WKWebView 内存远远没有 UIWebView 开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...: 大多数App需要支持 iOS7 以上版本,而 WKWebView 只在 iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...resetWKProcessPool 来触发 Cookie 同步到 NSHTTPCookieStorage ,实践发现不起作用,并可能会引发当前页面 session cookie丢失等问题。...WKWebView 页面样式问题 在 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...下载 DebugGap 并配置: 在电脑上面下载 Windows 版本 DebugGap 软件包(下载链接:DebugGap),下载完成解压下来。

    2.3K30

    WKWebView 那些坑

    导语 WKWebView 是苹果在 WWDC 2014 上推出新一代 webView 组件,用以替代 UIKit 笨重难用、内存泄漏 UIWebView。...简单适配方法本文不再赘述,主要来说说适配 WKWebView 过程填过坑以及善待解决技术难题。...工程师曾建议通过 reset WKProcessPool 来触发 Cookie 同步到 NSHTTPCookieStorage ,实践发现不起作用,并可能会引发当前页面 session cookie...id=138169 (复制链接到浏览器打开) 因此,如果通过 registerSchemeForCustomProtocol 注册了 http(s) scheme, 那么由 WKWebView 发起所有...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5页面恢复正常显示: /**设置contentInset值通过调整webView.frame让页面恢复正常显示

    4.6K130

    WKWebView

    在iOS,加载网页目前有两种控件:UIWebViewWKWebView。...WKWebView用法 ? WKWebView API WKWebView对象可以显示交互式Web内容,例如应用内浏览器。你可以使用WKWebView类将web内容嵌入到你应用程序。...默认情况下,Web视图会自动将出现在Web内容电话号码转换成电话链接。当电话链接被点击时,电话应用程序就会启动并拨打该号码。...布尔值,用于确定是否按下连接可以显示链接目标的预览。 - goBack。导航到后退列表后腿项。 - goForward。导航到后退列表前进项。...显示加载进度条 我们可以通过监听WKWebViewestimatedProgress属性值来实现一个加载进度条,而UIWebView只能是通过timer事件做一个假加载进度条。

    6K20

    【iOS开发】从 UIWebViewWKWebView

    UIWebViewWKWebView 区别 WKWebView 更快(占用内存可能只有 UIWebView 1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate...③为什么现在是时候从 UIWebView 迁移WKWebView 了: 截止到我写这篇文章时候,据 mixpanel 数据,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%...WKWebView 是 iOS 8 之后才有的 WebKit 内容,所以之前我们要同时兼容 iOS 7 和 iOS 8 时候,可以推辞说 UIWebViewWKWebView 一起做太麻烦了...正文 常用代理方法 在 WKWebView ,UIWebViewDelegate 与 UIWebView 被重构成了14类与3个协议,下面给出一些在 UIWebView 中常用方法 WKWebView..., forMainFrameOnly: true) // 这里 AtDocumentEnd 字段是指网页内容加载完毕再插入 JS 脚本,你也可以选择 AtDocumentStart,在 document

    1.8K20

    WKWebView 那些坑

    作者:林泽水 导语 WKWebView是苹果在WWDC 2014上推出新一代webView组件,用以替代UIKit笨重难用、内存泄漏UIWebView, 拥有60fps滚动刷新率、和safari...来触发Cookie同步到NSHTTPCookieStorage,实践发现不起作用,并可能会引发当前页面session cookie丢失等问题。...加载request3,最后将加载结果返回WKWebView; 5、WKWebView 页面样式问题 在WKWebView适配过程,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪发现主要是H5...如果某些特殊情况下非得调整contentInset不可的话,可以通过下面方式让H5页面恢复正常显示: /*设置contentInset值通过调整webView.frame让页面恢复正常显示 *参考...9、结语 本文总结了那些年和导师seanzhu一起填过WKWebView坑。虽然WKWebView坑比较多,但是相对UIWebView在内存消耗、稳定性方面还是有很大优势。

    17.3K21

    Flutter 与 iOS 原生 WebView 对比

    > UIWebView > flutter_webview 占用内存对比 这里查看内存使用是 Xcode debug session memory,首先看之前测试时,连续打开十次新浪内存情况...结论:内存 WKWebView > flutter_webview > UIWebView HTML5 兼容性对比 可以在 html5test 对浏览器兼容性进行评分,通过测试发现得分分别如下: 因为...flutter 里使用就是 WK,所以和原生 WKWebView 一样都是 444 分,比 UIWebView 437 略胜一筹。...是比UIWebView更好选择,推荐使用; flutter_webView_plugin:在iOS中使用就是原生WKWebView,所以总体和 native WKWebView 表现差不多。...不过如果从多端考虑、以及项目可迁移等,那么使用也未尝不可,就是维护成本要增加一些,需要维护两套 webView。这个就需要根据自己情况自己取舍了。

    1.6K20

    iOS小技能:UIWebView 被拒解决方案(用更安全WKWebView替代UIWebView

    引言 背景:202012之后苹果将不接受使用UIWebView UIWebView 被拒解决方案:使用WKWebView替代UIWebView 1、查 SDK是否用 UIWebView API...2、移除/升级含UIWebView第三方SDK(例:AFNetworking) 3、使用WKWebView替代UIWebView 4、WKWebView与JS交互案例(点击页面图片,调用iOS方法进行图片放大显示...、NSURLSession 和 UIWebView 请求; 对于 WKWebView 中发出网络请求也无能为力,如果真的要拦截来自 WKWebView 请求,还是需要实现 WKWebView...对应 WKNavigationDelegate,并在代理方法获取请求。...1.2 移除/替换自己项目使用UIWebView API代码 自己是否用了该 API 只需要在 Xcode 全局搜索即可 II 升级包含UIWebView第三方SDK具体例子 pod

    3.2K20

    WKWebView 白屏问题

    1、WKWebView 自诩拥有更快加载速度,更低内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程执行。...初次适配 WKWebView 时候,我们也惊讶于打开 WKWebView ,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 内存占用会增加。...在一些用 webGL 渲染复杂页面,使用 WKWebView 总体内存占用(App Process Memory + Other Process Memory)不见得比 UIWebView 少很多。...在 UIWebView 上当内存占用太大时候,App Process 会 crash;而在 WKWebView 上当总体内存占用比较大时候,WebContent Process 会 crash,从而出现白屏现象...综合以上两种方法可以解决绝大多数白屏问题。 参考链接:腾讯Bugly

    4.4K20

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

    1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 2.1 原理 2.2 例子 什么时候会触发这个返回事件?...截取当前显示在屏幕WKWebView UINavigationBarDelegate NavigationType Disable all the '_blank' target in page's...target 在WKWebViewWKNavigationDelegate代理方法处理应用跳转 简单处理WKWebView加载新页面 WKWebView显示JS弹框 WKWebView调用js方法...2、canGoBack:判断当前H5界面是否可以返回方法 3、goBack: 返回上一个界面 4、goForward:可以向前导航到back-forward列表内容,相当于回到关闭之前看过详情界面...5、 _webView.allowsBackForwardNavigationGestures = YES;允许左滑右滑,默认值为NO;设置为YES,即可实现左右滑手势操作后退前进 6、WKWebView

    5.9K21

    iOS开发----JavaScriptCore、UIWebViewWKWebView交互那些事

    ,并分别结合 UIWebView以及 WKWebView做了一下交互总结。...假设一个简单场景 Web通过一个 输入一个字符串,通过点击按钮设置成导航标题 原生设置完导航标题,告知Web"以将"设置成导航Title,并在网页最底下label显示出来...分别使用 UIWebView 以及 WKWebView 实现效果如下: JavaScriptCore 类库里面有12个类(还有两个是负责导入相关类头文件以及一个关于WebKit宏定义);在基本交互过程...JavaScript逻辑如下: 确认当前使用UIWebView还是 WKWebView,并通过变量 ritl_type确定 点击按钮,根据类型执行不同操作 客户端通过执行 iosTellSomething...这样子,基于JavaScriptCoreUIWebView以及WKWebView交互就算圆满完成啦!

    1.5K20

    动态链接ELFSection Name

    背景 在So动态链接,读取ELF文件,发现无法读取Section Header名称列表。即,无法在EShdr根据e_shstrndx找到Section对应名字。...而在运行时候动态链接是根据Segment来加载So文件,原因是希望尽可能小使用内存页面,并且提升加载速度。 ?...ELF链接与执行时视图 于是查看程序头部分,发现LOAD类型,仅仅只有.dynstr这个字符串表会被加载到内存。 ?...shstrtab 结论 shstrtab与strtab这两个表仅仅只是链接保存在So文件,而在链接之后执行视图层面,这两个字符串表不会被加载到内存。...并且,在执行视图中,可能没有SHDR,所以在链接文件可以根据SHDR偏移量来找到对应名字,而在加载到内存之后执行视图中,不能按照SHDR来查找Section名字了。

    1.3K30
    领券