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

在Swift 3中无法加载baseUrl为空的WKWebView中的数据?

在Swift 3中,如果尝试加载一个baseUrl为空的WKWebView中的数据,可能会遇到加载失败的问题。这是因为在WKWebView中,baseUrl用于解析相对路径的资源,如果baseUrl为空,WKWebView无法正确解析相对路径的资源。

解决这个问题的方法是,在加载数据之前,先判断baseUrl是否为空,如果为空,则将baseUrl设置为一个有效的值,例如一个默认的URL或者当前页面的URL。可以使用WKWebView的loadHTMLString方法来加载数据,并在参数中指定baseUrl。

以下是一个示例代码:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let configuration = WKWebViewConfiguration()
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        // 判断baseUrl是否为空
        var baseUrl: URL?
        if let url = webView.url {
            baseUrl = url
        } else {
            // 如果baseUrl为空,可以设置一个默认的URL
            baseUrl = URL(string: "https://www.example.com")
        }
        
        // 加载数据,并指定baseUrl
        let htmlString = "<html><body><h1>Hello, World!</h1></body></html>"
        webView.loadHTMLString(htmlString, baseURL: baseUrl)
    }
    
    // WKNavigationDelegate方法,用于处理加载完成的回调
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("加载完成")
    }
}

在上述示例代码中,我们首先创建了一个WKWebView,并将其添加到视图中。然后判断baseUrl是否为空,如果为空,则将其设置为一个默认的URL。最后使用loadHTMLString方法加载数据,并指定baseUrl。

需要注意的是,这只是一个解决方案的示例,具体的baseUrl的设置需要根据实际情况进行调整。另外,为了方便处理加载完成的回调,我们还实现了WKNavigationDelegate的方法。

推荐的腾讯云相关产品:腾讯云移动浏览器网页开发服务(https://cloud.tencent.com/product/mwb)可以帮助开发者更便捷地进行移动端网页开发,提供了丰富的功能和工具支持。

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

相关·内容

一个简单页面加载管理类(包含加载加载失败,数据加载成功)

最近公布比赛框架,发现了页面加载管理类,觉得挺有用,所以做个简单笔记。 什么是页面加载管理类呢?...我们一般写网络请求时候,如果不涉及什么MVP,或者别的,就一个简单网络请求,然后再成功结果里刷新View,请求过程总不能白屏吧,所以有些人可能会让转一个圈,或者显示加载布局,然后等成功后再隐藏掉...{ /**加载view*/ private View loadingView; /**加载失败view*/ private View errorView; /**加载数据view...*/ STATE_SUCCESS(1),/*加载成功状态*/ STATE_ERROR(2),/*加载失败状态*/ STATE_EMPTY(3);/*加载数据状态*/ private...instanceof List){ List list = (List) result; if(list.size()==0){ return PageState.STATE_EMPTY;/*加载数据

1.2K40

UI篇- UIWebView使用大全

,不做深究 WKWebView是iOS8推出,算是UIWebVeiw升级版。...,这个协议包含一个必须实现方法,这个方法是提高App与web端交互关键,它可以直接将接收到JS脚本转为OC或Swift对象--网上大神说,我没用过。)...加载百度编译器编辑HTML文本 ******** 使用UIWebView 加载 HTML图文文本 ********* //self.newsM.content网络返回原始图文信息。...OC调用JS方法 与UIWebView进行交互,调用web页面需要传参函数时,参数需要带单引号,或者双引号(双引号需要进行转义转义字符前加\),传递json字符串时不需要加单引号或双引号:...UIWebView iOS11使用。 ? UIWebView iOS 11上 当顶部 y值设为 0 时,是依然无法盖住UIStatusBar区域,但是滚动时就会出现问题了。

1.9K10

IOS WebView控件详解

概述 WebView就是一个内嵌浏览器控件,iOS主要有两种WebView:UIWebView和WKWebView,UIWebView是iOS2之后开始使用,WKWebViewiOS8开始使用,...其加载数据方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程也可以是本地...:(NSURL *)baseURL; 这个方法需要将httml文件读取字符串,其中baseURL是我们自己设置一个路径,用于寻找html文件引用图片等素材。...:(NSURL *)baseURL; UIWebView导航 我们浏览网页,时常会使用到刷新网页、前进、后退等导航操作,UIWebView里面也有对应操作方法。...WKWebView是iOS8一个新控件,算是对UIWebVeiw升级版。

4.5K80

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

WKWebView 几个不常用特性 WKWebview 加载过程性能指标图解 WKWebview 秒开实践及踩坑之路 今天分享这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...:@"text/html" characterEncodingName:@"UTF-8" baseURL:nil]; loadHTMLString 和 loadData 参数说明: baseURL...通过 [WKWebView loadRequest:] 方法访问 index.html 的话,仅能访问当前页面所在目录下相对路径资源,无法访问目录外资源,例如上例,index.html 仅能访问...通过 [WKWebView loadData:] 和 [WKWebView loadHTMLString:] 方法仅能加载当前HTML内容,无法加载资源文件,这种加载模式下,由于不需要访问其他路径下资源...WKWebView 属性 webView 属性 title: 网页标题,一般 html 内容 URL: 网页URL地址,最终加载地址 loading:

4.6K30

WKWebView

iOS加载网页目前有两种控件:UIWebView和WKWebView。...以上介绍了WKWebView优点,但是其也有以下缺点: 1,WKWebView需要iOS9及更高版本,虽然WKWebViewiOS8之后引入,但是iOS8版本存在重大限制,比如无法访问本地存储文件...布尔值,表示页面上所有资源是否通过安全加密连接加载。 - loadHTMLString:baseURL:。设置网页内容和baseUrl loading。布尔值,显示当前页面是否正在加载。...导航到后退列表后腿项。 - goForward。导航到后退列表前进项。 - goToBackForwardListItem:。导航到后退列表某一个网页项,并将其设置当前项。...// 传给WKWebView一个webUrl时候,WebView决定是否加载该请求。

5.9K20

iOSWebKit框架应用与解析 原

iOSWebKit框架应用与解析 一、引言         iOS8之前,应用嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序...,配置同一个进程池WebView会共享数据,例如Cookie、用户凭证等,开发者可以通过编写管理类来分配不同维度WebView不同进程池中。...()方法来像native发送消息,支持OC字典,数组,NSNumber等原生数据类型,JavaScript代码name要和上面注册相同。...:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL NS_AVAILABLE(10_11, 9_0); //渲染导航列表某个网页节点...:(NSError *)error{ } //主页数据加载发生错误时调用 -(void)webView:(WKWebView *)webView didFailProvisionalNavigation

1.9K40

WKWebView详解

您可以使用WKWebView类来应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置视图,并发送一个请求来加载web内容。...)从0.0到1.0不等 页面加载完成后,估算进度保持1.0,直到新导航开始,这时估算进度重置0.0 支持KVO 是否页面内所有资源都是通过安全链接加载 @property(nonatomic...; iOS上,这个属性只支持3D Touch设备上支持 iOS 10及以后系统版本默认值是YES,之前默认值是NO 如果将该属性值设置YES,则iOS用户可以按下链接来预览链接,并可以检测到地址和电话号码等数据...其只是一个描述瞬时状态数据对象,不能用来多次消息调用唯一标识一个frame。...其只是一个描述瞬时状态数据对象,不能用来多次消息调用唯一标识一个SecurityOrigin。

20.1K193

iOS开发----JavaScriptCore、UIWebView及WKWebView交互那些事

分别使用 UIWebView 以及 WKWebView 实现效果如下: JavaScriptCore 类库里面有12个类(还有两个是负责导入相关类头文件以及一个关于WebKit宏定义);基本交互过程...,其实最常使用有三个:JSContext、JSValue、JSExport JSContext 简单理解执行JavaScript一个环境,就好像我们绘制View时候需要获取CGContext...JSExport 这是一个协议,官方文档没有暴露出任何open协议方法,可以理解一个协议。...宏,可以将方法名简化,就像 Swift typealias以及 ObjC typedef。...UIWebViewDelegate UIWebViewDelegate webViewDidFinishLoad() 方法对JSContext进行截取,并执行操作: WKWebView 首先有一点

1.4K20

盘点一个Python自动化办公过程Excel数据处理

一、前言 前几天Python群,粉丝问了一个Python自动化办公问题,这里拿出来给大家分享下。...这个问题相信很多人都会遇到,原始Excel数据,这个【编号】列一般是有相关数据,但是如果没有的话,就先写“暂无编号”,如下图所示: 后来发现通过Python代码,将其写入到word文件,不太好看...二、实现过程 留空之后,再运行程序,发现写入到word文件结果竟然是nan,这就更加不好看了,还不如直接空着好了。...这里给了一个方法就是,excel原始表格,将单元格设置,就是一个空格,如下图所示: 这样再运行程序之后,word对应单元格,就是空白了。...代码,应该也可以直接写入,直接设置空字符串,大家也可以尝试下。 三、总结 大家好,我是皮皮。

13230

技术 | Hybrid载体变化(一)

,我对于他理解,苹果在iOS8推出新框架“Webkit”,其中WKWebView就是用来替换原来UIWebView,一句话,你用它原来UIWebView出现各种问题都被解决了。...当然随之而来会有一些小问题,比如:WKWebView是一个独立进程,那么它请求就无法通过系统URL SYSTEM了,你无法像UIWebView一样,可以通过NSURLProtocol来拦截所有的请求...初始化WKWebView时你还需要配置一个Conf,这个Conf你可以添加一个属性,这个属性JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp..., withError error: Error) { // 页面加载错误 print(error) } 每一个delegate实现你都应该去做一条日志记录或者是页面加载完成时间...,说到页面加载完成时间肯定是从didStart开始经过didCommit最后didFinish累加,这个时间不是渲染时间,渲染时间客户端上是很难统计,我建议是做一个JS-API,让Web应用主动提供渲染完成时间

84230

WKWebView 加载 Uni-App 导出本地 H5

Uni-App 打包发布H5包直接放到APP中加载可以用于提升加载速度,一般有两种方式: 直接把包放到 iOS 项目中加载 (多用于开发阶段测试) 从后台服务器预下载到文件沙盒内加载 (可以减少APP...包大小,同时也能实现热更新功能) 加载步骤 一、创建一个uni-app项目,并打包成H5 官方工具HBuilder创建一个测试项目 创建uni-app 修改 manifest.json...文件 h5配置运行基础路径:./ 修改配置 发行为H5 H5发行 二、iOS项目内直接加载包内 Uni-App 将整个Uni-App...Uni-App 基本逻辑和加载本地一致,但是必须使用 relativeToUrl 方法加载,首先确认自己缓存目录,然后给路径拼接file://协议头: - (void)viewDidLoad {....问题导致无法加载可以按如下设置,使WKWebView允许跨域: [self.webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs

91830
领券