我知道如何从JS向本地IOS swift app发送消息:
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中它是如何工作的
答案 0 :(得分:3)
WKWebView仅支持原始消息传递接口。你必须将它包装起来,以便在JS和本机之间进行复杂的交互。
我创建了一个名为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()
这非常容易和直截了当。有关详细信息,请查看项目页面。
答案 1 :(得分:0)
您可以尝试使用url parameters
,就像使用swift
以下是如何在javascript中获取网址参数的示例:Get url parameter jquery Or How to Get Query String Values In js
然后当您运行javascript时,您可以检查url parameters
是什么,然后运行基于该功能的函数
command
来说明要运行的函数
example.com?command=foo
然后我们应该在javascript
中有这样的东西if(command='foo'){
//run function
runFoo();
}
然后你也可以使用url参数将参数设置到函数
中如果您选择PHP
如果您选择使用php,这与$_GET['command'];