如何从swift访问javascript函数cordova?

时间:2016-05-16 02:15:02

标签: swift cordova cordova-plugins

我知道我们可以使用插件(exec)从cordova访问swift函数。

是否可以使用swift函数调用cordova javascript函数?

此致

2 个答案:

答案 0 :(得分:3)

是的,完全有可能从Swift调用JavaScript函数,您只需要参考cordova Web视图。

IIRC,旧版Cordova使用UIWebView,而更新版本使用较新版本WKWebView。执行JavaScript函数会略有不同,具体取决于您正在使用的Web视图。

WKWebView

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

使用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')")
  }
}