WebView
@MainActor
open class WebView : WKWebView
WKWebView封装,默认实现进度条、JS弹窗、Cookie管理、自定义User-Agent等
备注:
- 如需实现加载离线资源等场景,请使用configuration.setURLSchemeHandler
- 第一次加载可携带自定义Header,如果存在重定向,Header里面的Authorization因安全策略会丢失。解决方法示例:可新增Header比如X-Authorization,重定向时不会丢失
- 后续非首次加载自定义Header会丢失,解决方法示例:通过JSBridge桥接获取授权信息或采用GET参数|cookie储存等
- 如果遇到Cookie丢失问题,可尝试开启cookieEnabled或自行设置Cookie等
-
事件代理,包含navigationDelegate和UIDelegate
Declaration
Swift
@MainActor open weak var delegate: WebViewDelegate? { get set }
-
是否启用Cookie管理,默认false未启用
Declaration
Swift
@MainActor open var cookieEnabled: Bool
-
进度视图,默认trackTintColor为clear
Declaration
Swift
@MainActor open private(set) lazy var progressView: UIProgressView { get set }
-
配置允许外部打开的Scheme数组,默认空
Declaration
Swift
@MainActor open var allowsUrlSchemes: [String]
-
配置允许路由打开的Scheme数组,默认空
Declaration
Swift
@MainActor open var allowsRouterSchemes: [String]
-
配置允许下载的url句柄(iOS14.5+生效),默认nil
Declaration
Swift
@MainActor open var allowsDownloadUrl: ((URL) -> Bool)?
-
是否允许打开通用链接,默认false
Declaration
Swift
@MainActor open var allowsUniversalLinks: Bool
-
是否允许不受信任的服务器,默认false
需配置Info.plist开启NSAppTransportSecurity.NSAllowsArbitraryLoadsInWebContent或NSAllowsArbitraryLoads选项后生效
Declaration
Swift
@MainActor open var allowsArbitraryLoads: Bool
-
是否允许window.close关闭当前控制器,默认true
如果WebView新开了界面,触发了createWebView回调后,则不会触发。 解决方案示例:使用injectWindowClose或JSBridge桥接或URL拦截等方式关闭界面
Declaration
Swift
@MainActor open var allowsWindowClose: Bool
-
是否注入window.close方法,触发JSBridge桥接方法
Declaration
Swift
@MainActor open var injectWindowClose: Bool
-
网页请求,设置后会自动加载,支持NSString|NSURL|NSURLRequest。默认nil
Declaration
Swift
@MainActor open var webRequest: Any? { get set }
-
是否是第一次加载,第一次加载成功及以前都为true
Declaration
Swift
@MainActor open var isFirstLoad: Bool
-
设置重用时预缓存资源的url句柄,同一个reuseIdentifier仅生效一次,自动处理堆栈
Declaration
Swift
@MainActor public static var reusePreloadUrlBlock: ((String) -> Any?)?
-
Undocumented
Declaration
Swift
@MainActor override public init(frame: CGRect, configuration: WKWebViewConfiguration)
-
Undocumented
Declaration
Swift
@MainActor public convenience init(frame: CGRect)
-
Undocumented
Declaration
Swift
@MainActor public required init?(coder: NSCoder)
-
Undocumented
Declaration
Swift
@discardableResult @MainActor override open func load(_ request: URLRequest) -> WKNavigation?
-
即将回收视图,必须调用super
Declaration
Swift
@MainActor override open func reusableViewWillRecycle()
-
即将重用视图,默认重用次数+1,必须调用super
Declaration
Swift
@MainActor override open func reusableViewWillReuse()