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'];