** 解决 webView 加载 含有 中文的 URL 问题
将URL 中的 中文以及其他非英文字符 进行转换 URLEncode
extension String { func urlEncodeIfNeed() -> String { if let url:URL = URL(string: self){ if(UIApplication.shared.canOpenURL(url) == true){ return self; } } return NSString.init(string: self).addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)! } }
** 清除webView 缓存
let websetDataType = WKWebsiteDataStore.allWebsiteDataTypes(); let dateFrom:NSDate = NSDate.init(timeIntervalSince1970: 0) WKWebsiteDataStore.default().removeData(ofTypes: websetDataType, modifiedSince: dateFrom as Date, completionHandler: { print("clear done") })
//其中 WKWebsiteDataStory 的 类型有 let cookie = WKWebsiteDataTypeCookies;//网址的cookies let disCache = WKWebsiteDataTypeDiskCache;//磁盘缓存文件,比如图片文件 let WebApplicationCache = WKWebsiteDataTypeOfflineWebApplicationCache;//离线数据 let MemoryCache = WKWebsiteDataTypeMemoryCache;//内存缓存 let LocalStorage = WKWebsiteDataTypeLocalStorage;//网站通过代码写入到本地的数据 let SessionStorage = WKWebsiteDataTypeSessionStorage;//网站通过代码写入到本地的session let IndexedDBDatabases = WKWebsiteDataTypeIndexedDBDatabases;// let WebSQLDatabases = WKWebsiteDataTypeWebSQLDatabases;//
如果是 IOS 8 不支持以上清除缓存的方式 ,兼容清除, 以及手动删除Library/Caches文件夹等
http://mft.iteye.com/admin/blogs/2381013
也可以直接根据需要删除 document 下的文件夹
http://mft.iteye.com/admin/blogs/2394856
** 解决 target = "_blank" 打开新窗口问题
import WebKit
Extend your class with WKUIDelegate
Set delegate for webview
self.webView.uiDelegate = self
Implement protocol method
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { if navigationAction.targetFrame == nil { //webView.load(navigationAction.request) print(navigationAction.request); print("new target") } return nil }
** 获取上一个页面的URL
wb.backForwardList.backItem?.url.absoluteString
** 判断当前 加载的页面 是通过 返回 还是 前进 或者提交表单等
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if(navigationAction.navigationType != .backForward){ }
** 去掉 下拉 时的 橡皮筋效果
wkWebView.scrollView.bounces = false;
** 加载 hml 字符串
let jsUrl:String = "https://xw.qq.com"; var source:String = ""; let js_url = NSURL(string: jsUrl); do { print("1") let data = try NSString(contentsOf: js_url! as URL, encoding: UInt(String.Encoding.utf8.hashValue)) print("2") source = data as String; print(source); print("3") } catch { print("jjj false") } print("done") if(source != ""){ let wk:WKWebView = WKWebView(frame: self.view.frame); wk.loadHTMLString(source, baseURL: js_url! as URL) self.view.addSubview(wk) }
--------------------------------WKWebView 其他相关 知识 参考 ----------------------------------------------
swift -> WKWebView 滚动 监听 ,设置 滚动位置
swift -> WKWebview 长按 获取 html 标签
相关推荐
本知识点主要聚焦于如何使用Swift对WKWebView进行封装,以及如何实现与H5页面的交互,包括调用JavaScript(JS)方法。 首先,WKWebView是WebKit框架的一部分,它取代了旧的UIWebView,提供了更好的性能和更低的内存...
"swift-基于WKWebView控件上跨平台框架"是一个专注于利用WKWebView实现跨平台功能的项目,旨在提升移动应用的性能和用户体验。WKWebView是苹果在iOS 8及更高版本中引入的一个重要组件,它替代了旧有的UIWebView,为...
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.request.url?.isFileURL ?...
func getAllCookies() -> [HTTPCookie]? { return WKWebsiteDataStore.default().httpCookieStore.getAllCookies() } ``` 3. **删除Cookie**:当用户退出或注销账号时,我们需要清除对应的cookie。可以通过`...
在iOS应用开发中,Swift语言提供了WKWebView组件,它是苹果推荐用来替代UIWebView的现代Web内容展示工具。WKWebView不仅性能更优,还支持最新的Web标准和技术,如HTML5、CSS3和JavaScript。本篇文章将深入讲解如何...
Swift-WKWebView(本地数据)源码解析与应用 Swift-WKWebView是Apple在其iOS和macOS平台上提供的一款用于在应用程序内嵌入Web内容的框架。WKWebView是WebKit框架的一部分,取代了旧的UIWebView,提供了更高效、性能更...
在Swift中,创建一个`WKWebView`实例并加载网页内容是这样的: ```swift import WebKit let webView = WKWebView(frame: .zero) view.addSubview(webView) let url = URL(string: "https://www.example.com")! ...
Swift-WKWebView是苹果开发的一款用于在iOS和macOS应用中展示网页内容的高级框架,它是基于WebKit引擎的。WKWebView不仅提供了比旧版UIWebView更高效、更现代的渲染性能,还支持更多的API功能,使得开发者能更好地...
Swift-WKWebView是一个基于WebKit框架的网页浏览解决方案,它提供了在iOS和macOS应用中内嵌网页内容的能力,而无需依赖任何第三方插件。WebKit是苹果公司的开源浏览器引擎,广泛用于Safari和其他苹果平台的应用程序...
1. **WKWebView 的引入**:Swift 5.0 中引入 WKWebView,它是WebKit框架的一部分,用于在iOS和macOS应用中显示Web内容。WKWebView不仅能够加载HTML页面,还支持JavaScript执行、CSS样式控制、表单交互等功能。 2. *...
在iOS开发中,WKWebView是苹果提供的一种用于展示网页内容的控件,它取代了旧版的UIWebView,提供了更好的性能和安全性。然而,在实际应用中,开发者常常遇到一个挑战:如何准确地获取WKWebView加载的网页实际内容...
let htmlString = "<html><body><h1>Hello, WKWebView!</h1></body></html>" webView.loadHTMLString(htmlString, baseURL: nil) ``` 或者 ```swift let url = URL(string: "https://www.example.com")! ...
本项目“swift-swift版本的简易WKWebview浏览器带加载进度条”是基于Swift编写的一个轻量级WKWebView组件,它集成了加载进度条功能,允许用户侧滑返回上一网页,同时提供了多种方式关闭当前浏览界面。下面我们将详细...
这个"ios-JS wkWebView交互.zip"文件似乎包含了一个示例,展示了如何在WKWebView中实现JavaScript与Swift的交互,特别是在用户界面操作如调用相机、相册,图像处理和数据传递方面。 首先,让我们深入理解WKWebView...
用分类封装 WKWebView,一行代码搞定 request、URL、URLString、本地 HTML文件、HTMLString等请求,一个 block 搞定 title、progress、currentURL、当前网页的高度等等所需
基于WKWebView封装,支持>=iOS8系统,包含功能:页面加载进度条、上方导航、底部toolbar,转场动效、分享、打开appstore下载弹窗、和js交互 国际化、兼容iPad、preview(>=iOS9)、用chrome、safari打开网页、清缓存...
Swift-HDEmptyView是一个专为Swift编程语言设计的EmptyView显示库,旨在提供便捷的空视图(Empty View)管理功能,适用于多种常见的UI组件,如WKWebView、UITableView和UICollectionView。这个库允许开发者轻松地在...
Swift中的WKWebView是iOS开发中一个非常重要的组件,尤其在iOS8及之后的版本中,它取代了旧的UIWebView,提供了更好的性能和安全性。WKWebView不仅能够加载和展示网页内容,还支持与JavaScript的深度交互,使得原生...
2. **初始化**:在你的Swift类中,创建一个WKWebView实例,并在其中初始化WebViewJavascriptBridge。这通常在`viewDidLoad`方法中完成。 ```swift import WebKit class ViewController: UIViewController, ...
"swift-webView进度条显示Demo"是一个实例,展示了如何在使用WKWebView加载网页时,同步显示一个进度条,以提供更好的用户体验。WKWebView是Apple推荐用来替代UIWebView的新组件,它在性能和稳定性上都有显著提升。 ...