我在iOS中使用UIWebView,并与js通信。我使用JSContext获取以下js回调:

public typealias jsBridgeFuncAlias = (JSValue)->Void
@objc
protocol WebViewJSExport:JSExport {
var call:jsBridgeFuncAlias?{get}
}
class SAJavaScriptBridge:NSObject,WebViewJSExport{
public var call: jsBridgeFuncAlias?
public init(context:JSContext){
    super.init()
    context.setObject(self, forKeyedSubscript:kBridgeName as (NSCopying & NSObjectProtocol)!)
    self.call = { [unowned self](block:JSValue) in
        self.callNativeMethod(block:block )
    }
}

func callNativeMethod(block:JSValue){
     block.call(withArguments:nil)  //execute the js callback block in ios native
}

但是在迁移到WKWebView之后,我无法使用以下代码获取js callBack块:
window.webkit.messageHandlers.WKWebView.postMessage(function())

有人可以帮忙吗?

最佳答案

试试这个:
window.webkit.messageHandlers.ur function.postMessage(ur object);
当您使用wkwebview时,您不应使用javascripCore;

初始化配置并添加u功能
[config.userContentController addScriptMessageHandler:代理名称:@“u函数”];

当js调用函数时,u会很有趣:
userContentController:didReceiveScriptMessage :;

关于ios - 如何在WKWebview中获取JS回调?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39590051/

10-14 22:15