WKWebView---WKScriptMessageHandler

- (void)addScriptMessageHandler:(id <WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;

//WKWebView initial
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:_webView];
NSString *path = [[NSBundle mainBundle] pathForResource:@"WebView" ofType:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];
[webView loadRequest:request];

//- (void)addScriptMessageHandler:(id <WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;
//name表示添加的js方法名
[webView.configuration.userContentController addScriptMessageHandler:self name:@"openCamera"];
[webView.configuration.userContentController addScriptMessageHandler:self name:@"playVideo"];

window.webkit.messageHandlers.注册的方法名.postMessage(parameters);

<!DOCTYPE html>
<html>
<head>
    <title>webView</title>
    <style>
        button {
            font-size: 30px;
            width: 250px;
            height: 50px;
            display: block;
            margin-top: 5px;
        }
    </style>
    <script type="text/javascript">
        function useCamera() {
            window.webkit.messageHandlers.openCamera.postMessage(null);
        }
        function useVideo(vedio) {
            var obj = {"name":"God", "Author":"Jhon Trank"};
            window.webkit.messageHandlers.playVideo.postMessage(obj);
        }
    </script>
</head>
<body>
    <button onclick="openCamera()" id="openCameraButton">openCamera</button>
    <button onclick="playVideo()" id="playVideoButton">playVideo</button>
</body>
</html>

WKScriptMessageHandler这个协议的代理方法

js通过messageHandlers调用方法,传递参数。在这个代理里,都可以获取到。

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"openCamera"]) {
        NSLog(@"%@ -- %@", message.name, message.body);//openCamera -- <null>
    }else if([message.name isEqualToString:@"playVideo"]) {
        NSLog(@"%@ -- %@", message.name, message.body);//playVideo -- {Author = "Jhon Trank";name = God;}
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容