JS在Swift中调用一个函数

我知道如何从JS发送消息到本地IOS快速应用程序:

func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) { println("JavaScript is sending a message \(message.body)") } 

和JS:

 webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript"); 

我的问题是:是否有可能直接调用本地应用程序中的函数,而不是在我的示例代码中接收消息。

说我想在JS中使用像这样的东西:

 webkit.messageHandlers.someFunctionName() 

我问的原因是,在Android中它是如何工作的

WKWebView只支持原始消息传递接口。 你必须包装JS和本地之间的复杂交互。

我创build了一个名为XWebView的项目,它提供了基于WKWebView的原始消息传递的语言绑定样式的API。 它是用Swift编写的。

例如,你可以在Swift中编写一个插件:

 class Plugin : NSObject { func someFunctionName() { doSomeThing() } } 

在加载HTML之前,将插件的一个实例展示给JavaScript:

 let webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration()) webView.loadPlugin(Plugin(), namespace: "foo") 

从JavaScript调用函数:

 window.foo.someFunctionName() 

这真的很简单,直接。 有关更多详细信息,请检查项目页面。

您可以尝试使用url parameters ,就像使用swift连接到PHP一样

这里是一个如何在javascript中获取url参数的示例: 获取url参数jquery或者如何获取js中的查询string值

然后当你运行的JavaScript你可以检查,在检查什么的url parameters ,然后运行一个基于这个function

像这样的url是example.com我们使用参数command来说明运行什么函数

 example.com?command=foo 

那么我们应该在JavaScript中有这样的东西

 if(command='foo'){ //run function runFoo(); } 

然后你也可以使用url参数来设置参数到函数中

如果你selectPHP

如果您select使用php,则可以使用$_GET['command'];执行相同的操作$_GET['command'];