`

swift -> WKWebView

 
阅读更多

 

** 解决 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 进度条 加载 

 

swift -> WKWebview 长按 获取 html 标签

 

 

 

 

分享到:
评论

相关推荐

    swift-针对WKWebView进行的封装支持和H5交互包括调用js方法等

    本知识点主要聚焦于如何使用Swift对WKWebView进行封装,以及如何实现与H5页面的交互,包括调用JavaScript(JS)方法。 首先,WKWebView是WebKit框架的一部分,它取代了旧的UIWebView,提供了更好的性能和更低的内存...

    swift-基于WKWebView控件上跨平台框架

    "swift-基于WKWebView控件上跨平台框架"是一个专注于利用WKWebView实现跨平台功能的项目,旨在提升移动应用的性能和用户体验。WKWebView是苹果在iOS 8及更高版本中引入的一个重要组件,它替代了旧有的UIWebView,为...

    swift-使用WKWebView的一个带下载的web浏览界面

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.request.url?.isFileURL ?...

    swift-帮助WKWebView管理cookie

    func getAllCookies() -> [HTTPCookie]? { return WKWebsiteDataStore.default().httpCookieStore.getAllCookies() } ``` 3. **删除Cookie**:当用户退出或注销账号时,我们需要清除对应的cookie。可以通过`...

    swift-WKWebView封装快速浏览网页

    在iOS应用开发中,Swift语言提供了WKWebView组件,它是苹果推荐用来替代UIWebView的现代Web内容展示工具。WKWebView不仅性能更优,还支持最新的Web标准和技术,如HTML5、CSS3和JavaScript。本篇文章将深入讲解如何...

    Swift-WKWebView(本地数据) 源码

    Swift-WKWebView(本地数据)源码解析与应用 Swift-WKWebView是Apple在其iOS和macOS平台上提供的一款用于在应用程序内嵌入Web内容的框架。WKWebView是WebKit框架的一部分,取代了旧的UIWebView,提供了更高效、性能更...

    swift-WKWebView显示HTML中的GIF动图WebP无损图片最简单最方便的接入

    在Swift中,创建一个`WKWebView`实例并加载网页内容是这样的: ```swift import WebKit let webView = WKWebView(frame: .zero) view.addSubview(webView) let url = URL(string: "https://www.example.com")! ...

    Swift-WKWebView(网络连接) 源码

    Swift-WKWebView是苹果开发的一款用于在iOS和macOS应用中展示网页内容的高级框架,它是基于WebKit引擎的。WKWebView不仅提供了比旧版UIWebView更高效、更现代的渲染性能,还支持更多的API功能,使得开发者能更好地...

    swift-wkwebview

    Swift-WKWebView是一个基于WebKit框架的网页浏览解决方案,它提供了在iOS和macOS应用中内嵌网页内容的能力,而无需依赖任何第三方插件。WebKit是苹果公司的开源浏览器引擎,广泛用于Safari和其他苹果平台的应用程序...

    swift5.0 wkwebview封装 WKWeView.zip

    1. **WKWebView 的引入**:Swift 5.0 中引入 WKWebView,它是WebKit框架的一部分,用于在iOS和macOS应用中显示Web内容。WKWebView不仅能够加载HTML页面,还支持JavaScript执行、CSS样式控制、表单交互等功能。 2. *...

    ios-计算WKWebview的实际高度.zip

    在iOS开发中,WKWebView是苹果提供的一种用于展示网页内容的控件,它取代了旧版的UIWebView,提供了更好的性能和安全性。然而,在实际应用中,开发者常常遇到一个挑战:如何准确地获取WKWebView加载的网页实际内容...

    IOS原生与h5交互--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-swift版本的简易WKWebview浏览器带加载进度条”是基于Swift编写的一个轻量级WKWebView组件,它集成了加载进度条功能,允许用户侧滑返回上一网页,同时提供了多种方式关闭当前浏览界面。下面我们将详细...

    ios-JS wkWebView交互.zip

    这个"ios-JS wkWebView交互.zip"文件似乎包含了一个示例,展示了如何在WKWebView中实现JavaScript与Swift的交互,特别是在用户界面操作如调用相机、相册,图像处理和数据传递方面。 首先,让我们深入理解WKWebView...

    swift-用分类封装WKWebView

    用分类封装 WKWebView,一行代码搞定 request、URL、URLString、本地 HTML文件、HTMLString等请求,一个 block 搞定 title、progress、currentURL、当前网页的高度等等所需

    swift-LYWebViewController基于WKWebView和UIWebView封装

    基于WKWebView封装,支持>=iOS8系统,包含功能:页面加载进度条、上方导航、底部toolbar,转场动效、分享、打开appstore下载弹窗、和js交互 国际化、兼容iPad、preview(>=iOS9)、用chrome、safari打开网页、清缓存...

    swift-HDEmptyView一个Swift语言封装的EmptyView显示库

    Swift-HDEmptyView是一个专为Swift编程语言设计的EmptyView显示库,旨在提供便捷的空视图(Empty View)管理功能,适用于多种常见的UI组件,如WKWebView、UITableView和UICollectionView。这个库允许开发者轻松地在...

    swift-WKWebViewOC版一款IOS8以后的web加载神器

    Swift中的WKWebView是iOS开发中一个非常重要的组件,尤其在iOS8及之后的版本中,它取代了旧的UIWebView,提供了更好的性能和安全性。WKWebView不仅能够加载和展示网页内容,还支持与JavaScript的深度交互,使得原生...

    swift-WebViewJavascriptBridgeOC与H5的交互

    2. **初始化**:在你的Swift类中,创建一个WKWebView实例,并在其中初始化WebViewJavascriptBridge。这通常在`viewDidLoad`方法中完成。 ```swift import WebKit class ViewController: UIViewController, ...

    swift-webView进度条显示Demo

    "swift-webView进度条显示Demo"是一个实例,展示了如何在使用WKWebView加载网页时,同步显示一个进度条,以提供更好的用户体验。WKWebView是Apple推荐用来替代UIWebView的新组件,它在性能和稳定性上都有显著提升。 ...

Global site tag (gtag.js) - Google Analytics