我在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/