@available(iOS 16.4, *)
open var isInspectable: Bool
开启调试模式 debug 下 可以设置为YES, 关于 wkwebview 在手机上加载调试 可以简单看这篇文章juejin.cn/post/684490…
@available(iOS 16.0, *)
open var isFindInteractionEnabled: Bool
@available(iOS 16.0, *)
open var findInteraction: UIFindInteraction? { get }
这个是开启用户搜索用的, 就是我们平常在浏览器里面 按 command + F 出来个搜索框那个。我们也可以 再手机上 给个触发点, 然后调用 UIFindInteraction类的API 。弹出来输入框。进行搜索。功能是会搜索页面内容相同的,并且会高亮。具体如何不知道没做过。结论就是 并不是自带的,而是 需要开发者手动调用UIFindInteraction 类的一个方法,开启搜索。
@available(iOS 15.0, *)
open func loadFileRequest(_ request: URLRequest, allowingReadAccessTo readAccessURL: URL) -> WKNavigation
加载本地HTML url 。 包括项目里面的和沙盒的都可以。(是一个html+css+js模式的项目 还是说Vue这种模式的项目 都支持与否 不确定)貌似支持, 如果是Vue项目 allowingReadAccessTo 指定到静态资源根目录下。即使能加载HTML 。但是还会存在跨域问题。而且是iOS15以上。
@available(iOS 15.0, *)
open var interactionState: Any?
这个比较有意思。他是指我们的web 在加载完成后, 可执行一些跳转等操作。比如 调到了 第二个页面。 此时这个interactionState就有值了。 如果我再创建一个webview 把interactionState复制过去,加载webview ,会直接出现第二个页面。就相当于存了一些基础信息。可以直接过去。
@available(iOS 14.5, *)
open func startDownload(using request: URLRequest, completionHandler: @escaping (WKDownload) -> Void)
@available(iOS 14.5, *)
open func startDownload(using request: URLRequest) async -> WKDownload
@available(iOS 14.5, *)
open func resumeDownload(fromResumeData resumeData: Data, completionHandler: @escaping (WKDownload) -> Void)
@available(iOS 14.5, *)
open func resumeDownload(fromResumeData resumeData: Data) async -> WKDownload
这个是 WKwebview 提供的一个 简易的下载方法。 WKDownload这个类的代理 里面 可以设置最后下载文件的位置。
@available(iOS 15.0, *)
open func closeAllMediaPresentations(completionHandler: (() -> Void)? = nil)
@available(iOS 15.0, *)
open func closeAllMediaPresentations() async
@available(iOS, introduced: 14.5, deprecated: 15.0)
open func closeAllMediaPresentations()
@available(iOS 15.0, *)
open func pauseAllMediaPlayback(completionHandler: (() -> Void)? = nil)
@available(iOS 15.0, *)
open func pauseAllMediaPlayback() async
@available(iOS 15.0, *)
open func setAllMediaPlaybackSuspended(_ suspended: Bool, completionHandler: (() -> Void)? = nil)
@available(iOS 15.0, *)
open func setAllMediaPlaybackSuspended(_ suspended: Bool) async
@available(iOS 15.0, *)
open func requestMediaPlaybackState(completionHandler: @escaping (WKMediaPlaybackState) -> Void)
@available(iOS 15.0, *)
open func requestMediaPlaybackState() async -> WKMediaPlaybackState
@available(iOS 15.0, *)
open var cameraCaptureState: WKMediaCaptureState { get }
@available(iOS 15.0, *)
open var microphoneCaptureState: WKMediaCaptureState { get }
@available(iOS 15.0, *)
open func setCameraCaptureState(_ state: WKMediaCaptureState, completionHandler: (() -> Void)? = nil)
@available(iOS 15.0, *)
open func setCameraCaptureState(_ state: WKMediaCaptureState) async
@available(iOS 15.0, *)
open func setMicrophoneCaptureState(_ state: WKMediaCaptureState, completionHandler: (() -> Void)? = nil)
@available(iOS 15.0, *)
open func setMicrophoneCaptureState(_ state: WKMediaCaptureState) async
这几个方法 从下 往上依次是 麦克风 摄像头 媒体播放器(音频+视频播放器 系统内置的 JS调用系统的播放器) 的相关API 。 比如 让不让JS用啊。 取消播放啊等操作。
open func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Void)? = nil)
open func evaluateJavaScript(_ javaScriptString: String) async throws -> Any
这俩比较熟悉了。 原生 -> jS 的通信方式。 通过这个API达到原生调用JS方法的操作 。执行一段JS代码等操作。 注意 此方法需要 在webView加载完成 调用才有效果。
/**
open func reload() -> WKNavigation?
open func reloadFromOrigin() -> WKNavigation?
open func stopLoading()
加载 和 停止加载。 这三方法 , 是指 加载webview 的时候可以调用的。 reload 是指刷新页面。不会重新从服务器请求资源。而是使用缓存资源。 reloadFromOrigin 是会重新从服务器下载 html js css 等资源 ,再重新刷新页面。注意。 刷新的都是当前页面。 比如 加载一个H5 。然后点击跳转到第二个页面。此时 刷新的是第二个页面。
@available(iOS 10.0, *)
open var serverTrust: SecTrust? { get }
服务器证书, 是指webview 的资源下载服务器的服务器证书, 只读的,客户端可以拿到这个属性进行校验,自定义规则, 如果不通过,可以主动关闭页面等操作。