WKWebView

@_spi(FW) extension WKWebView

ReusableViewProtocol

  • 重用WebView全局配置句柄(第二个参数为重用标志),为所有复用WebView提供预先的默认configuration

    Declaration

    Swift

    public class var fw_reuseConfigurationBlock: ((WKWebViewConfiguration, String) -> Void)? { get set }
  • 初始化WKWebView可重用视图

    Declaration

    Swift

    open override class func reusableViewInitialize(reuseIdentifier: String) -> Self
  • 即将回收视图,必须调用super

    Declaration

    Swift

    open override func reusableViewWillRecycle()
  • 即将重用视图,默认重用次数+1,必须调用super

    Declaration

    Swift

    open override func reusableViewWillReuse()

WebView

  • 默认跨WKWebView共享Cookie,切换用户时可重置processPool清空Cookie

    Declaration

    Swift

    public static var fw_processPool: WKProcessPool
  • 快捷创建WKWebView默认配置,自动初始化User-Agent和共享processPool

    Declaration

    Swift

    public static func fw_defaultConfiguration() -> WKWebViewConfiguration
  • 获取默认浏览器UserAgent,包含应用信息,示例:Mozilla/5.0 (iPhone; CPU OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari/605.1.15 Example/1.0.0

    Declaration

    Swift

    public static var fw_browserUserAgent: String { get }
  • 获取默认浏览器扩展UserAgent,不含平台信息,可用于applicationNameForUserAgent,示例:Mobile/15E148 Safari/605.1.15 Example/1.0.0

    Declaration

    Swift

    public static var fw_extensionUserAgent: String { get }
  • 获取默认请求UserAgent,可用于网络请求,示例:Example/1.0.0 (iPhone; iOS 14.2; Scale/3.00)

    Declaration

    Swift

    public static var fw_requestUserAgent: String { get }
  • 获取当前UserAgent,未自定义时为默认,示例:Mozilla/5.0 (iPhone; CPU OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148

    Declaration

    Swift

    public var fw_userAgent: String { get }
  • 加载网页请求,支持String|URL|URLRequest等

    Declaration

    Swift

    @discardableResult
    public func fw_loadRequest(_ request: Any?) -> WKNavigation?
  • 清空网页缓存,完成后回调。单个网页请求指定URLRequest.cachePolicy即可

    Declaration

    Swift

    public static func fw_clearCache(_ completion: (() -> Void)? = nil)
  • 清空WebView后退和前进的网页栈

    Declaration

    Swift

    public func fw_clearBackForwardList()
  • 使用JavaScriptCore执行脚本并返回结果,支持模板替换。常用语服务端下发计算公式等场景

    Declaration

    Swift

    public static func fw_evaluateScript(_ script: String, variables: [String : String] = [:]) -> JSValue?
  • 设置Javascript桥接器强引用属性,防止使用过程中被释放

    Declaration

    Swift

    public var fw_jsBridge: WebViewJSBridge? { get set }
  • 是否启用Javascript桥接器,需结合setupJsBridge使用

    Declaration

    Swift

    public var fw_jsBridgeEnabled: Bool { get set }
  • 自动初始化Javascript桥接器,jsBridgeEnabled开启时生效

    Declaration

    Swift

    @discardableResult
    public func fw_setupJsBridge() -> WebViewJSBridge?
  • 绑定控制器导航栏左侧按钮组,需结合setupNavigationItems使用

    Declaration

    Swift

    public var fw_navigationItems: [Any]? { get set }
  • 自动初始化控制器导航栏左侧按钮组,navigationItems设置后生效

    Declaration

    Swift

    public func fw_setupNavigationItems(_ viewController: UIViewController)