WKWebView JavaScript将消息发送到Objective-C并返回值
如何使用WKWebView,JavaScript将消息发送到Objective-C并返回值 像这样:WKWebView JavaScript将消息发送到Objective-C并返回值,javascript,objective-c,wkwebview,Javascript,Objective C,Wkwebview,如何使用WKWebView,JavaScript将消息发送到Objective-C并返回值 像这样: NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"]; WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:W
NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"];
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
[config.userContentController addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"iOS"];
[config.userContentController addUserScript:wkUScript];
WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT) configuration:config];
让result=window.webkit.messageHandlers.name.postMessage()
添加名为的脚本消息处理程序
使JavaScript函数window.webkit.messageHandlers.name.postMessage(messageBody)在使用用户内容控制器的所有web视图的所有帧中定义
我找到了另一种方法,通过将WKUserScriptInjectionTimeAtDocumentStart参数插入js到web的本地存储中。 像这样:
NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"];
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
[config.userContentController addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"iOS"];
[config.userContentController addUserScript:wkUScript];
WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT) configuration:config];
这不是我想要的结果。