日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WKWebview与js交互

發(fā)布時間:2023/11/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WKWebview与js交互 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

應用場景:

項目中在原有h5界面中嵌入js代碼,在指定位置加入第三方分享

此部分為js點擊分享綁定部分代碼,這里的事件名需要h5和前端協(xié)商好一致。

window.webkit.messageHandlers.<事件名>.postMessage(需要傳遞的數(shù)據(jù))

?

iOS端

首先需要遵循WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler三個代理方法

?

WKWebViewConfiguration *wkConfig = [[WKWebViewConfiguration alloc] init];

? ? wkConfig.userContentController = [[WKUserContentController alloc] init];

此處事件名與h5端js代碼事件名一致

? ? [wkConfig.userContentController addScriptMessageHandler:self name:@"事件名"];

?

? ? self.webview = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:wkConfig];

? ? self.webview.backgroundColor = WXColor(240, 240, 240);

? ? self.webview.UIDelegate = self;

? ? self.webview.navigationDelegate =self;

? ? [self.view addSubview:self.webview];

? ? [self.webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"URL"]]];

?

// 頁面開始加載時調(diào)用

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{

}

// 當內(nèi)容開始返回時調(diào)用

- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{

}

// 頁面加載完成之后調(diào)用

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{

//此處向原h(huán)5界面注入js代碼jsStr。

? ? [self.webview evaluateJavaScript:jsStr completionHandler:^(id _Nullable rest, NSError * _Nullable error) {

? ? ? ? NSLog(@"error_____%@",error);

//如果這里提示error,則js代碼中含有特殊字符如空格和換行,需要去掉。

? ? }];

// 頁面加載失敗時調(diào)用

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation{

}

?? ?

}

//實現(xiàn)js注入方法的協(xié)議方法

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {

? ? NSLog(@"message____%@", message);

? ? //找到對應js端的方法名,獲取messge.body

? ? if ([message.name isEqualToString:@"方法名"]) {

? 處理各類分享的點擊事件

? ? }

}

?

轉(zhuǎn)載于:https://www.cnblogs.com/FZP5/p/8611826.html

總結(jié)

以上是生活随笔為你收集整理的WKWebview与js交互的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。