let preferences = WKPreferences() // 开启js preferences.javaScriptEnabled = true // 创建WKWebViewConfiguration let configuration = WKWebViewConfiguration() // 设置WKWebViewConfiguration的WKPreferences configuration.preferences // 创建WKUserContentController let userContentController = WKUserContentController() // 配置WKWebViewConfiguration let configuration = WKWebViewConfiguration() // 设置WKWebViewConfiguration的WKPreferences 创建WKUserContentController let userContentController = WKUserContentController() // 配置WKWebViewConfiguration
addUserScript:script]; [userContentController addScriptMessageHandler:self name:@"publishHandler"]; WKWebViewConfiguration *wkWebViewConfiguration = [WKWebViewConfiguration new]; wkWebViewConfiguration.allowsInlineMediaPlayback = YES; wkWebViewConfiguration.userContentController = userContentController; if (@available (iOS 9.0, *)) { [wkWebViewConfiguration.preferences setValue:@(true) forKey:@"allowFileAccessFromFileURLs = preferences; self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:wkWebViewConfiguration
对WKWebViewConfiguration进行设置。 实现媒体文件可以自动播放、使用内嵌HTML5播放等功能 使用这个测试网址 // 初始化配置对象 WKWebViewConfiguration *configuration = [[WKWebViewConfiguration WKScriptMessageHandler协议 @interface ViewController () <WKNavigationDelegate,WKScriptMessageHandler> @end 再为WKWebViewConfiguration +0800 webViewPlayMedia[342:59346] [Process] kill() returned unexpected error 1 在该系统版本下,WKWebView使用配置WKWebViewConfiguration
遵循代理 @interface SharecgiteViewController ()<WKNavigationDelegate,WKScriptMessageHandler> (2)添加方法监听 WKWebViewConfiguration *webviewConfig = [[WKWebViewConfiguration alloc] init]; webviewConfig.userContentController
WKWebView 初始化 WKWebViewConfiguration 代理方法 WKNavigationDelegate WKUIDelegate 属性和方法 历史记录管理 WKBackForwardList - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER; 示例代码: WKWebViewConfiguration *conf = [WKWebViewConfiguration new]; WKWebView 示例代码: WKWebViewConfiguration *conf = [WKWebViewConfiguration new]; // 在初始化方法之前,设置 cookie NSHTTPCookie WKWebViewConfiguration *conf = [WKWebViewConfiguration new]; WKWebView *wk = [[WKWebView alloc] initWithFrame
WKWebView 初始化时,有一个参数叫configuration,它是WKWebViewConfiguration类型的参数,而WKWebViewConfiguration有一个属性叫userContentController 1.创建WKWebViewConfiguration对象,配置各个API对应的MessageHandler。 示例代码如下: // 这是创建configuration 的过程 WKWebViewConfiguration *configuration = [[WKWebViewConfiguration
--more-->实现针对网页:针对网页的处理:如果有基类,可以直接在基类初始化WKWebview的地方,添加如下代码: WKWebViewConfiguration *config = [[WKWebViewConfiguration originalMethod, swizzleMethod); }- (instancetype)swizzleInitWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration wkUController = [[WKUserContentController alloc] init]; [wkUController addUserScript:wkUScript]; // 配置对象 WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; wkWebConfig.userContentController = wkUController
WKWebView:网页的渲染与展示,通过WKWebViewConfiguration可以进行配置。 WKWebViewConfiguration:这个类专门用来配置WKWebView。 三、使用WKWebViewConfiguration对WebView进行配置 使用下面的代码可以创建一个WKWebView视图,创建WebView视图时,需要使用WKWebViewConfiguration 来进行配置: WKWebView * WK; WKWebViewConfiguration * config = [[WKWebViewConfiguration alloc]init] ; [WK loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]]; WKWebViewConfiguration 协议中方法解析 //创建新的webView时调用的方法 -(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
} } } 常用代理方法 WKUIDelegate WKNavigationDelegate WKScriptMessageHandler lazy var webConfiguration: WKWebViewConfiguration = { let configuration = WKWebViewConfiguration.init() let preferences = WKPreferences.init() preferences.javaScriptCanOpenWindowsAutomatically = self.webouterView.bounds } func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration
WKWebView API WKWebView的头文件声明: // webview 配置,具体看下面 @property (nonatomic, readonly, copy) WKWebViewConfiguration WKBackForwardList *backForwardList; // 默认构造器 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration (void)setMagnification:(CGFloat)magnification centeredAtPoint:(CGPoint)point; #endif ```` ## WKWebViewConfiguration 配置 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; ## WKPreferences偏好设置 导航动作对象、window特性 - (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
WKUIDelegate // 创建一个新的WebView - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
stringWithFormat:@"%@=%@",dic[@"k"] , dic[@"v"]] forHTTPHeaderField:@"Cookie"]; } }]; WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; config.userContentController = userContentController
decisionHandler; 2 WKUIDelegate -(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration (0, 20, kScreenWidth, kScreenHeight-20) configuration:config]; 配置 config 对js 的方法进行类似注册的操作 WKWebViewConfiguration *config = [WKWebViewConfiguration new]; //初始化偏好设置属性:preferences config.preferences = [WKPreferences
遵守WKUIDelegate代理,实现如下方法 public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration
preferences = WKPreferences() // 开启JavaScript preferences.javaScriptEnabled = true // 创建WKWebViewConfiguration let configuration = WKWebViewConfiguration() // 设置WKWebViewConfiguration的WKPreferences configuration.preferences // 创建WKUserContentController let userContentController = WKUserContentController() // 配置WKWebViewConfiguration // 调用Swift方法 function responseSwift() { // 这里的callbackHandler是创建WKWebViewConfiguration
WKWebView主要涉及到以下类或协议,各部分可能互相依赖,文章按照apple文档的划分对每一个模块进行了详细的解释 WKWebView 配置和偏好 WKWebViewConfiguration WKPreferences *configuration; 初始化 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration; 如果初始化失败返回nil 这是一个接收自定义WKWebViewConfiguration参数的初始化方法 其会对传入的WKWebViewConfiguration对象进行拷贝 使用WKWebViewConfiguration类,你可以决定网页的渲染时机,媒体的播放方式,用户选择项目的粒度,以及很多其他的选项。 WKWebViewConfiguration只会在webview第一次初始化的时候使用,你不能用此类来改变一个已经初始化完成的webview的配置。
webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; WKWebViewConfiguration :为添加WKWebView配置信息 //创建网页配置对象 WKWebViewConfiguration *config = [[WKWebViewConfiguration // 页面是弹出窗口 _blank 处理 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
构建和配置 WKWebView是继承自UIView的,因此构建方式还是很老套的,通常 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init]; configuration.preferences.minimumFontSize
以下为创建 WKWebViewConfiguration 和 创建 WKWebView 示例: WKWebViewConfiguration *configuration = [[WKWebViewConfiguration
window.webkit.messageHandlers.login.postMessage() }</script></body>iOS代码- (void)viewDidLoad { WKWebViewConfiguration * config = [[WKWebViewConfiguration alloc] init]; config.userContentController = [[WKUserContentController