我知道我们可以使用插件(exec)从cordova访问swift函数。
是否可以使用swift函数调用cordova javascript函数?
此致
答案 0 :(得分:3)
是的,完全有可能从Swift调用JavaScript函数,您只需要参考cordova Web视图。
IIRC,旧版Cordova使用UIWebView
,而更新版本使用较新版本WKWebView
。执行JavaScript函数会略有不同,具体取决于您正在使用的Web视图。
let webView = WKWebView(frame: view.frame)
view.addSubview(webView)
let greeting = "Your age is: "
let age = 50
// Notice the single-quotes needed to pass greeting as a string.
let javaScript = "function doSomething(a, b) { return a + b };doSomething('\(greeting)', \(age))"
webView.evaluateJavaScript(javaScript, completionHandler: { object, error in
print(object) // Prints Your age is: 50
})
请注意,WKWebView
必须是可见的(作为子视图添加到可见视图中)才能执行JavaScript。
使用UIWebView
的{{1}}执行任意JavaScript函数。例如:
stringByEvaluatingJavaScript(from:)
答案 1 :(得分:0)
CDVPlugin
类型的成员称为commandDelegate
,成员类型为CDVCommandDelegate
。在该处可以找到函数evalJs
。
@objc(MyPlugin) public class MyPlugin : CDVPlugin {
override public func pluginInitialize() {
commandDelegate.evalJs("console.log('hello js')")
}
}